Monday, October 14, 2013

Week 16 & Week 17 - More Peg Puzzles

A little late but I'm working on rounding out my collection of peg puzzles.

This week includes a puzzle called "Starburst" where you want to remove all the pegs by following the lines.

The other puzzle is actually not a puzzle but a two player game called cops & robbers. The goal is to trap your opponent which is not as easy as it sounds. You can play it as a puzzle by trying to trap yourself!

Again, each of these puzzles is written in only HTML5, Javascript (using KineticJS and jQuery) and CSS3. Essentially each game is it's own "board" object which gets loaded and unloaded when you select one. There are wrapper classes for the drawing object that also hold the game logic. This setup proved very useful in developing the 2nd and 3rd games and more to come!

Matt's Pegs - Peg Puzzles!

Monday, September 30, 2013

Monday, September 23, 2013

Week 14 - Not a website

This week is not a website but a brochure. It was severely needed and made a great project. I'm very pleased with the way it turned out.

Slashhack Brochure

Monday, September 16, 2013

Week 13 - Peg Puzzle

When I was a kid we had a fairly good sized collection of board games. They ranged from Power Rangers to pizza. We also had a game with 100 games, magnetic travel games, and a collection of wooden peg puzzles and games. The latter is the theme of this week's project - Matt's Pegs.

This week we use HTML5's <canvas> element to draw our peg board and accept input. Right now the page only has one game but since most of the effort was setting up the framework, I'll be adding more games as a different project. I think this would also be nice to port to Android. The page currently looks great on any screen, even my phone, but looks best in landscape mode.

The "Line Jump" puzzle is actually from an old 16-bit Windows game but I could imagine it easily being a wooden peg puzzle like you find in Cracker Barrel. Rules are simple, get the pegs to opposite sides. The pegs can move to an empty spot of jump over 1 peg at a time. Pegs can't move backwards. I hope you have fun!

Matt's Pegs - Peg Puzzles!

Thursday, September 12, 2013

The Rent is Too Damn Fair

Game theory has always been a topic that has intrigued me. In college I took a couple classes on the subject.  So when I recalled a Dinosaur Comics strip about the "cake cutting" problem it had me looking into it on Wikipedia. It is actually a very fascinating topic. Most people know that if you have two people to divide a cake, one person should cut and the other one gets to choose first. But what if you have more people? Also, equal portions might not be the only way to divide fairly; for example, one person might like different toppings.

Determining how to divide up rent is a particularly fascinating problem because the actors in the situation want to maximize their utility of the space they are getting (i.e. nicer bedroom) and minimize the amount of rent to pay at the same time.  The calculator at Splitwise is very good at determining a rent split based on room size, unique features, etc, and is based on results from surveys of what people think is fair. When researching the room assignment-rent division problem, as its called, there is a very interesting paper on how an auction format could maximize fairness. In fact, if the actors knew what the max for each room they would be willing to spend would be, a computer could determine the best price for everyone and room assignments without actually holding an auction.

At OneWeekOneWebsite one of the weekly projects I was hoping on doing was going to be making a site to determine such assignments.  However, someone has already done a fantastic job at this. The Rent Is Too Damn Fair looks like an awesome site so I figured there was no reason for me to repeat someone else's work. I'll have to find something else to do this week.

Sunday, September 8, 2013

Week 12 - Android App!

My wonderful wife frequently looses her phone and then it proceeds to die. We have no idea where it may be or even if it is in the house.  That's why this weekend I've built an Android app to help combat that problem.

Last Known Whereabouts - This app will turn on GPS and send a text message to a chosen contact when the battery reaches a defined low level. Hopefully this will either help plug in the phone before it dies (using something like "Where's my Droid") or if it is dead we will have an ok location from the GPS (at least telling us it is in the house or not).

Making an Android app was a difficult and awesome experience. It is a really powerful platform and I'm sure it would be easier if I spent more time with it.

Last Known Whereabouts (App)

Monday, September 2, 2013

Week 11 - Slashhack Sales

This week's site is practical and a demo of an eCommerce website. Today I'm releasing a sales portal for my website design at sales.slashhack.net

Wednesday, August 28, 2013

Week 7 to Week 10 Recap

Since I've been on vacation a bit and I've missed sharing announcements, here is a summary of the last 4 weeks of projects:

Week 7 - Mechanicville Stillwater Chamber of Commerce Demo
Week 8 - Analytics
Week 9 - Issue Tracking
Week 10 - Click Multiple Times Chrome Extension

Week 10 - Click Multiple Times Chrome Extension

This week I've decided to update my Chrome Extension called "Click Multiple Times". You can right-click on a link and it will fetch the resulting url multiple times. This is useful if a website makes you click a link multiple times, each popping up an ad, until you get the content you want. Since Google updated their security model, I had a bit of updating todo and since I was already in there I wanted to put some better features and error handling. One more thing off my "todo" list.

If you want to give it a try, you can find it here in the Chrome Webstore

Monday, August 19, 2013

Week 9 - Issue Tracking

On vacation this week so I've set up a utility site that will be useful as the number of sites grows.

This week I've set up BugTracker.NET for tracking issues on any of my websites. There aren't any issues in there now (because I'm perfect) but you can take a look by clicking here and using the username/password: viewer/viewer

Monday, August 12, 2013

Week 8 - Analytics

On vacation this week so I've set up a utility site that will be useful as the number of sites grows.

This week I've set up Piwik, an analytics platform for tracking visits. I've also added tracking code to each of the One Week One Website sites so far. You can check it out and how many visitors we have been getting by clicking here.

Monday, August 5, 2013

Week 7 - Mechanicville-Stillwater Chamber Demo

This week I've created a demo of functionality for an upgrade of the Mechanicville-Stillwater Chamber of Commerce website. You can see the old site here. The new site is based in DNN and allows good dynamic features like membership, events and news. If they like it, hopefully I'll be building the full thing.

Mechanicville-Stillwater Chamber Demo

Monday, July 29, 2013

Week 6 - Chinese Take-out Name Generator

I've been sick this week so I've decided to get one of my simpler, sillier ideas out of the way.  This week is a Chinese Take-out Name Generator. I've noticed all of the places around here have the same pattern of name, an adjective (or noun that can be an adjective) and a noun.  Check it out for some smiles and if you use it in naming your restaurant remember to give me a free meal!

Tuesday, July 23, 2013

Week 5 - Don't Log In Facebook Game

Yay! After some setbacks with some setup on GoDaddy, the Don't Log In Facebook app is now live and ready for people to start playing!

I wanted to do something a little challenging and popular so a Facebook app seemed like the way to go.

Basically, you get points based on the number of days since your last login to the game. (n * (n+1) / 2) to be exact. But, you only get points when you log in so you MUST log in to move up in rank. It has a mindvirus sort of feel to it that reminds me of "The Game" (which, by the way, you just lost now).

Give it a try, invite your friends. Try to trick them in to logging in.

Don't Log In - Facebook

Tips for Facebook Apps

Here are a few tips and reminders for myself about Facebook apps:

  1. They are esentially your webpage in an iframe.
  2. Internet Explorer hates IFrames unless you specify a p3p policy.
  3. Some Chrome extensions break IFrames, try disabling some if you get a message like 'Blocked a frame with origin "apps.facebook.com"
  4. Facebook requires HTTPS now.
  5. Your main canvas page should do a top.location.href = authorization page.
  6. The authorization page will redirect back to your app, you will need to redirect back into your application page on facebook to get the Facebook chrome back

Monday, July 22, 2013

Week 5 - Soon

So I've put in the subdomain for this week about 3 hours ago but for some reason GoDaddy is going really slow today. Normally a subdomain is setup in 20 minutes. Everything is all deployed but hopefully I can officially launch tonight.

Monday, July 15, 2013

Week 4 - DataJunkie, Free Surveys

It doesn't look like PayPal approval is going to happen, at least any time soon.  In the mean time, here is an interactive app written in ASP.NET MVC.

DataJunkie, a free survey creation site.

In college I took a class on data mining which was very fascinating.  Predictive analysis was also very interesting.  For my final project I used data mining on basketball stats and odds to see if there was a way to beat the odds and make a profit.  Turns out there is, if I was to bet one each game in a season it would be possible to turn a few thousand dollar profit. I haven't gotten around to actually doing this yet...

The point is I've built this site to hopefully be a platform which I can offer my predictive analysis expertise as a premium service.  To gain interest, you can create unlimited surveys with unlimited questions and responses, unlike the largest player in the market (SurveyMonkey). Basic percentage analysis is included but more detailed analysis will become a premium feature later on.

In other news, I'm still looking for an idea for a website for a non-profit organization. See the post and leave a comment or contact me another way (Google+). Also, I forgot to include the link for The Empty Plate last week.

Week 4 - Later Today

Week 4 will be up later today after I finish my day job. Everything worked great until I tried to deploy.  Apparently AutoMapper does not like the medium-trust level the GoDaddy runs on its shared hosting so I will have to manually write some mapping functions.

Monday, July 8, 2013

[Ideas Needed] Building a simple content website for a non-profit business or person!

It can be pretty hard to come by the funds to build a website, especially if you are an organization or individual trying harder to help others than help their profits.  That's why as a portfolio building exercise I'm looking to help out one such cause.

Who?

I am taking applications from individuals and organizations looking for me to build them a website.  No businesses, business professionals or those looking for a personal site, this must be geared toward providing information for your cause and organization.  Environmental groups, community groups, religious groups or individuals are great.  Scouting groups or scouts working on their merit badges/ Eagle are excellent (I'm an Eagle scout myself).  Basically, you have to need the site to help out, not to be cheap and make money.  I will choose one website to be built (but I might choose more in the future).

What?

I will build a 3-5 page informational website and host it for a year in my content management system..  I won't provide a domain name other than yourname.oneweekonewebsite.com (but if you have one I will set it up to direct to the website).  Nothing too fancy, nothing interactive, just a website to get people interesting in you and to tell them how to help and get in contact with you.

When?

Week 5 or 6 or later.  Turnaround isn't guaranteed but it shouldn't be too long since I'm trying to build one website each week it shouldn't be two long.

How?

Send me a message on Google+ or an email to business @ slashhack.net and include some information about yourself and why I should build you a website.  Also, have an idea of the content you will want to put on the site (different pages, etc). If you have a design in mind, draw it up or you can pick one from oswd.org and let me know.

Week 3 - The Empty Plate - Demo Restaurant Site

Still no luck with Paypal approval. I hope that turns out well.  If not I think I'll still put that project on display/on sale.

Instead, for this week I have built a demo restaurant website to demonstrate how simple it is to build content with DotNetNuke.  After setting up the skin, the content took just an hour or two. While not completely full of content (since I don't actually own a restaurant), it would look awesome with a full menu and some tasty images.

For Week 5 or 6 I will be building a website for a non-profit for free! If you know of any non-profit that would like a website, check out my next post.

Tuesday, July 2, 2013

Groupon is getting old and big, we're building something young and personal

One of the goals of One Week One Website is to clear off my list of todos. One reason that there is a significant list is I have large goals for each project I work on and it becomes daunting.  My forcing a time limit (i.e. one week) it will help me get feedback and see which ideas are worth improving on. Start my seeds indoors before planting the good ones in the garden. I've had the idea (and partially done code) for a daily deals site. I'll likely start from scratch but getting a bare-bones working site will be the priority in a future week.

Groupon forces companies to off deals at least 50% off then they proceed to take half off the remainder. That means for every dollar of value that massage is worth, the spa is only getting a quarter.  Not to mention a sales army that has to make a new client every day for every market. Groupon also must evaluate whether or not the deal is worth enough that it will help them churn out a profit to investors. We aren't going to do that.

We'll be building a deals platform where, apart from a small processing fee, the merchant keeps revenue from the sale of vouchers.  More similar to traditional advertising, the merchant will pay for the opportunity to  advertise their business but the cost for that will be determined by the merchants based on the supply and demand.  While frontpage slots might cost a lot, we can always add more markets or categories to bring the price down for small businesses.  Conversely, if the market or category has little activity, merchants might be able to advertise for free!

We'll see how my ideas come together over the next few weeks before I get a chance to set this project as the site for a week.  If anyone has any thoughts, I would love to hear them!

Monday, July 1, 2013

Week 2 - Slashhack.net - DNN Conversion

Delayed and Still Delivered

Unfortunately the site I had planned for this week needs to be approved by Paypal so it will have to wait. It is all ready so hopefully that will be approved by next week.

Luckily, I was able to put together an install of DotNetNuke.  For those of you who don't know, DotNetNuke is a content management system. Once setup, this allows users to make content changes without having any knowledge of HTML or coding.  This is a great step in allowing me to develop sites which will be maintained by the business owners.

Just installing DNN, while not simple, didn't seem like an accomplishment worth a whole week so I also converted my business' website. This involved taking the site's markup and style and converting it to a DotNetNuke skin. The content of the site was then rebuilt in the content editor. I have archived the original site for comparison:

If you are interested in your own site in DNN or need site converted to a skin, feel free to contact me and we can make arrangements.  You might even get featured on OneWeekOneWebsite.com.  You can see the built-in example at example.oneweekonewebsite.com. You can also watch a video on how to edit content in DNN here.

Saturday, June 29, 2013

DotNetNuke & GoDaddy - How to have nice urls

The Problem

For Week 3 I have been working on setting up DotNetNuke.  I have a Windows shared hosting which isn't so bad but it does have it's quirks.  For instance, it loves to add the directory name into the url.
http://sites.oneweekonewebsite.com
becomes
http://sites.oneweekonewebsite.com/dotnetnuke

The common wisdom is to place DotNetNuke in the root of the site but that didn't work for my purposes. (Actually I will end up doing that only because I want to make the site currently in the root in DNN). Keeping DNN in it's own virtual directory has presented itself with some challenges.  Obviously I don't want users to see the /dotnetnuke in the url nor do I want it to be required. After a couple days of trial and error I came up with a solution.

The Solution

Step 1:

Assuming you have a working DNN install, set up a Portal Alias for urls with both the virtual directory and non-virtual directory.

Step 2:

Experience with MVC sites says that we can edit the web.config file in order to add rewrite rules.  In order to do this you must be running in IIS integrated pipeline mode.

Since it seems that the root directory tries to handle url rewrites first (GoDaddy thing?), we must add the following code to the system.webServer section of our web.config in the ROOT of the hosting account.

    <rewrite>
      <rules> 
 <clear />
       <rule name="Remove Virtual Directory">
          <match url=".*" />
          <action type="Rewrite" url="{R:0}" />
        </rule>
        <rule name="Rewrite DotNetNuke to Root" stopProcessing="true" enabled="true">
           <match url="^dotnetnuke$|^dotnetnuke/(.*)$" />
           <conditions>
           </conditions>
           <action type="Redirect" url="{R:1}" redirectType="Permanent" />
        </rule>
        <rule name="Rewrite Root to DotNetNuke " stopProcessing="true" enabled="true">
           <match url="^(.*)$" />
           <conditions logicalGrouping="MatchAll">
  <add input="{HTTP_HOST}" negate="false" pattern=".+\.oneweekonewebsite\.com$" />
  <add input="{PATH_INFO}" negate="true" pattern="^/dotnetnuke$|^/dotnetnuke/(.*)$" />
           </conditions>
           <action type="Rewrite" url="dotnetnuke/{R:1}" />
        </rule>
      </rules>
    </rewrite>

Rule Descriptions:
  1. Rewrite the url to itself.  This is interesting in that it creates an X_ORIGINAL_URL server variable which MVC uses to populate it's routes. This will get rid of the virtual directory on a normal MVC site.
  2. Look for the virtual directory name and redirect to the url without it.  This will get the user's browser to display our nice url if they come from one that includes the virtual directory.
  3. Rewrite a url without the virtual directory to one with the virtual directory. The rewritten url is only used internally by the server so the user won't see this. This will make it so the server matches the request to a request to dnn.  Notice how I added a condition for my domain.  I have multiple domains but oneweekonewebsite.com is the only one running DNN and I don't want the others to be picked up by it. The regular expression will send any subdomains to DNN.  The second condition will also prevent any urls already containing the virtual directory name from having it added again.
Update: In order for everything to work, your domain should point to the root of the hosing account NOT the virtual directory.

Step 3:

???  I really thought this was more complicated than it is with all the time I spent on this.  Hopefully I can save others some time.  I guess step 3 is just profit.

One thing that would be good is to get a FriendlyURL module. All the links on the site will still have the virtual directory in them but users will hardly ever notice them since when they click on them they will be redirected to the nice name.  Outbound rewrite rules would work if you run your own server but GoDaddy only has version 1.1 of the URLRewrite Module. If we could get them to upgrade to 2.0 we would be able to rewrite urls in links.

Friday, June 28, 2013

Week 1.5 - Great start, great feedback

Getting some great feedback on this project.  Lots of people watching me so that makes me nervous on delivering.

Week 2's site looks all set. I'll just do the deploy and testing this weekend. If you have a Visa or other debit card gift card this site might be for you.

Week 3 is also coming along nicely.  It will be a setup of DotNetNuke with a conversion of an existing site I have into DotNetNuke.  DotNetNuke will hopefully allow me to build content based sites easier.

Monday, June 24, 2013

Week 1 - OneWeekOneWebsite.com

Let's Get this Started

In order to best track this project we need a site for progress. If you are reading this, you've found it.

The first site makes sense to be the one to hold them all together.  A nice slow start also gave me time to setup the domain and hosting and all that fun stuff so I don't have to do that when things get busier.

This site is simply a Blogger blog. You'll be able to follow posts on what is happening and view the List of Websites. I'll also use it to gather feedback and suggestions or ideas for future weeks.

If you have any tips for what you would like to see here, leave them in the comments below.

Week 0 - What is going on here?

Background

I love building websites. I love putting something together and standing back to look at the results. While I do web development as my day job, I really wanted a project to call my own and that would be both challenging and interesting. That is why I am challenging myself to develop one website in one week for the next 52 weeks or more. I've seen only a couple of others attempt this. One only has the first week finished.  Another, David W Clary, looks to have been highly successful, having completed 10 weeks before become too busy developing sites for others. No regrets as long as I work my best.

Challenge


  • Create a website, app, blog, etc. each week so it is available by Monday morning.
  • I'm a developer, not a designer so function over form but I should try to improve my art skills.
  • Learn new technologies, have fun.
  • Try to get some of those ideas in my head out into the wild to make room for more ideas.

Audience

As a reader you can help and participate in multiple ways:
  • Check out each site Monday morning and leave comments and feedback.
  • Sharing sites or this challenge with your friends.
  • Writing me nasty letters if the site isn't up.
  • Coming up with ideas of sites, nothing you wouldn't want your grandma to see.
If you have an idea for a site I will post when I need suggestions.  If you have a particular site that you need for yourself or company, contact me at anytime and we can work out a deal for me to build it and feature it on OneWeekOneWebsite.