<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2662743856081682045</id><updated>2011-04-21T19:11:48.746-04:00</updated><category term='apache'/><category term='php'/><category term='apple'/><category term='comcast'/><category term='development'/><category term='programming'/><category term='ebay'/><category term='example'/><category term='tutorial'/><category term='hosting'/><category term='school'/><category term='textdrive'/><category term='inspiration'/><category term='life'/><category term='beta'/><category term='simpl'/><category term='home'/><category term='rails'/><category term='thoughts'/><category term='optimization'/><category term='internet'/><category term='computer'/><category term='simplelog'/><category term='server'/><category term='testing'/><category term='release'/><category term='blueprint'/><category term='phpsimpl'/><category term='work'/><category term='rant'/><title type='text'>Nick DeNardis</title><subtitle type='html'>What? this kid has a life?</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-5327820119142051025</id><published>2007-08-18T07:56:00.000-04:00</published><updated>2007-08-18T08:00:02.301-04:00</updated><title type='text'>New Host! New Home!</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;a href="http://www.flickr.com/photos/dorkstyle/1153499355/" title="Photo Sharing" style="margin:0px 0px 0px 0px;float: right;"&gt;&lt;img src="http://farm2.static.flickr.com/1337/1153499355_e9c175eb65_m.jpg" width="240" height="180" alt="Friday Night" /&gt;&lt;/a&gt;My new setup is quite comfortable. Hosting by &lt;a href="http://joyent.com/"&gt;Joyent&lt;/a&gt; running on a Shared Accelerator using &lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrel&lt;/a&gt; proxyied through &lt;a href="http://www.apache.org/"&gt;Apache&lt;/a&gt; to run a &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt; application known as &lt;a href="http://simplelog.net/"&gt;SimpleLog&lt;/a&gt; with a green inspired simple style theme created by &lt;a href="http://flickr.com/photos/dorkstyle"&gt;Myself&lt;/a&gt; using a new &lt;span class="caps"&gt;CSS&lt;/span&gt; framework called &lt;a href="http://blueprintcss.googlecode.com/"&gt;Blueprint&lt;/a&gt;.&lt;p&gt;&lt;/p&gt;&lt;p&gt;From the time my &lt;span class="caps"&gt;DNS&lt;/span&gt; change went through it took only about an hour to get the whole thing up and running. Although while typing this I am still waiting for a Mongrel port, running Mongrel by hand works just fine.&lt;/p&gt;&lt;p&gt;The setup was good timing because &lt;a href="http://flickr.com/photos/dorkstyle/tags/andrea/"&gt;Andrea&lt;/a&gt; is working late and I am still trying to wrap my head around all the upcoming decisions needed to be made about &lt;a href="http://wayne.edu/"&gt;wayne.edu&lt;/a&gt;. I am now the Interim Web Manager in the Marketing Department. With the new position comes some new goals and I am currently putting them together  and hope to bring my experience with high load shared server environments in some upcoming articles.&lt;/p&gt;&lt;p&gt;Eventually all my old archived articles from my blogger account will get moved over, I just need the motivation to do it.&lt;/p&gt;&lt;p&gt;New Blog URL: &lt;a href="http://nickdenardis.com"&gt;nickdenardis.com&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-5327820119142051025?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/5327820119142051025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=5327820119142051025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5327820119142051025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5327820119142051025'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/08/new-host-new-home.html' title='New Host! New Home!'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1337/1153499355_e9c175eb65_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-597186226742591773</id><published>2007-08-15T21:12:00.000-04:00</published><updated>2007-08-15T21:58:39.269-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='inspiration'/><title type='text'>Planning a Future</title><content type='html'>Making Connections. Helping Out. Advancing. Upgrading. Living.&lt;br /&gt;&lt;br /&gt;Life is too short to sit and let it pass you by, get noticed and stand out.&lt;br /&gt;&lt;br /&gt;It will be worth it, don't look back while moving forward.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-597186226742591773?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/597186226742591773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=597186226742591773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/597186226742591773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/597186226742591773'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/08/planning-future.html' title='Planning a Future'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-7241173546128723218</id><published>2007-08-14T18:26:00.000-04:00</published><updated>2007-08-14T19:00:37.607-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='textdrive'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>Bumps Road Moving to TextDrive</title><content type='html'>So I thought moving was easy... I thought wrong. Yesterday I decided although my new site was not fully complete in development that I would sign up for TextDrive (&lt;a href="http://joyent.com"&gt;Joyent&lt;/a&gt;) hosting and get everything setup so in the next week I would be all ready to launch the new site. I picked my plan, put in my CC info and then waited... three minutes to be exact, and I was not surprised to see a large "Opps something went wrong" page. After checking my email I noticed that I did get an email saying my CC was charged but what was odd was their was no invoice number. Fearing I would be double charged I didn't resubmit my CC info and clicked their friendly Help link. I submitted a ticket outlining all my steps and intentions and waited...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://surpasshosting.com"&gt;My current host&lt;/a&gt; (not blogger) but for my client work always respond within 30 minutes with at least a &lt;span style="font-style: italic;"&gt;We see the issue and we will get someone working on it&lt;/span&gt;. But every hosting company is different so I thought I would just wait it out. Well it is 24 hours later and still no response. All that has changed was it was assigned to a "Chris Morris". So I put in a response confirming that 24 hours have gone by and asking if they had an estimated time frame for responding to issues. That was three hours ago and still no response.&lt;br /&gt;&lt;br /&gt;So I am trying my best to keep it positive but if this is the way a hosting company treats its potential customers they better have some damn good servers and uptime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-7241173546128723218?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/7241173546128723218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=7241173546128723218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7241173546128723218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7241173546128723218'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/08/bumps-road-moving-to-textdrive.html' title='Bumps Road Moving to TextDrive'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-7315822704674385478</id><published>2007-08-05T13:35:00.000-04:00</published><updated>2007-08-05T14:56:17.465-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='simplelog'/><category scheme='http://www.blogger.com/atom/ns#' term='blueprint'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Working with Blueprint: A CSS Framework</title><content type='html'>&lt;a href="http://www.flickr.com/photos/dorkstyle/1007974311/" title="Photo Sharing" style="margin: 0px 0px 10px 10px; float: right;"&gt;&lt;img src="http://farm2.static.flickr.com/1183/1007974311_4619370871_m.jpg" alt="SimpleLog base install" height="175" width="240" /&gt;&lt;/a&gt;So I decided to change my blogging software, from no software (&lt;a href="http://blogger.com/"&gt;Blogger&lt;/a&gt;) to &lt;a href="http://simplelog.net/"&gt;SimpleLog&lt;/a&gt;. I setup everything up in my dev environment and it was by far the easiest setup I have seen so far. Took about 10 minutes including setting up the virtual hosts.&lt;br /&gt;&lt;br /&gt;While getting super interested in my blog again I was looking for some nice examples of css blogs to get inspired I stumbled upon &lt;a href="http://bjorkoy.com/blueprint/"&gt;Blueprint&lt;/a&gt;, which is a css framework so I decided to give it a whirl.&lt;br /&gt;&lt;br /&gt;First impressions it is super lightweight and non-intrusive, just two lines that have to be added. to the head which includes the style sheets. My only gripe so far was that they just include one grid option which is 14 columns, its not a big deal all that I think it needs is a few other background images to show the options of columns from the grid. Like 7 columns, 3x8x3 and so forth.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/dorkstyle/1019903198/" title="Photo Sharing" style="margin: 0px 0px 10px 10px; float: right;"&gt;&lt;img src="http://farm2.static.flickr.com/1085/1019903198_dcd24b201f_m.jpg" alt="nickdenardis.com in progress" height="150" width="240" /&gt;&lt;/a&gt;So I hit up Photoshop and came up with a basic color scheme and outline for the new blog. Took about a day of going back and forth on how much I wanted to add to the site but being inspired by rails iterative approach to programming I decided to stick with the simple and expand from there.&lt;br /&gt;&lt;br /&gt;Back to Blueprint, with my design it ended up being very easy to implement in blueprint. It doesn't have anything nested tho which I was really interested in since it looked to handle nesting very gracefully. I tried as hard as I could to make this design fit into a 14 column grid but I made the design decision to keep the width at 780 instead of Blueprints default of 960. But not to fear we are just working with css here all I did was just override two of their default widths in my screen.css to keep the integrity of their files in case I decided to upgrade them in the future it will be fully degradable.&lt;br /&gt;&lt;br /&gt;Their reset.css worked great, I am use to using &lt;a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/"&gt;Eric Meyers reset.css&lt;/a&gt; and then creating everything from there. But Blueprint had an unexpected typography.css which setup quite a bit of the default typography. Which was a huge time saver, because Eric's just leaves you out in the cold to setup everything on your own which is totally cool if your project warrants it but sometimes there are elements that get introduced and have no control over.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/dorkstyle/1020085600/" title="Photo Sharing" style="margin: 0px 0px 10px 10px; float: right;"&gt;&lt;img src="http://farm2.static.flickr.com/1107/1020085600_83041d3c20_m.jpg" alt="SimpleLog + Blueprint Base" height="169" width="240" /&gt;&lt;/a&gt;So setting up a new template in SimpleLog was easy and I started editing the site.rhtml layout to use the naming conventions per Blueprint. Just a few class changes and I removed some default SimpleLog items that I didn't include in my final design and boom! We have an outline!&lt;br /&gt;&lt;br /&gt;Fast forward through time, 26 css declarations and 3 images later and my homepage was almost done. Time in total was about 2 hours to copy and setup an entire new template with SimpleLog and Blueprint. I was amazed, usually I hate when things try to be "smart" and assume they know what options and action you are going to preform but Blueprint didn't get in my way at all. Since everything for the base elements was already setup I just used my ID's and Classes to extend the base and life was good.&lt;br /&gt;&lt;br /&gt;Although I was just concentrating on the homepage today flipping through all the other pages they didn't look that bad by default. SimpleLog uses a lot of the same css names and conventions throughout their pages  meshed with Blueprints base styles and my overrides the only things left to do were the specifics of the page.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.flickr.com/photos/dorkstyle/1020203506/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1053/1020203506_6822f2e3e3_m.jpg" alt="Initial design for nickdenardis.com" height="183" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Last but not least, my current host is not very Rails friendly so I am looking for a new host for my blog. While doing that I will continue to update here and work on the new version on my dev server. So far:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SimpleLog&lt;/span&gt;: A+&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ton of features and rock solid. Easy install and great documentation. I have not looked into any extensions or plugins yet but there are a few areas where I can see a few more helper functions. But for getting a blog up quick and painless SimpleLog is the way to go.&lt;/li&gt;&lt;li&gt;&lt;a href="http://simplelog.net"&gt;SimpleLog&lt;/a&gt; Website&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Blueprint&lt;/span&gt;: A-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For just being at 0.3 release it is a huge time saver, its not just the resets for cross browser compatibility but it also includes a good typography and print styles which I have always been looking to create. I hate going through and trying to think of all the HTML elements a client could potentially use and make sure they are set accordingly. Blueprint defiantly has a future in my web development life and releasing it to the community will only make it better.&lt;/li&gt;&lt;li&gt;&lt;a href="http://bjorkoy.com/blueprint/"&gt;Blueprint CSS Framework&lt;/a&gt; Website&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-7315822704674385478?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/7315822704674385478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=7315822704674385478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7315822704674385478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7315822704674385478'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/08/working-with-blueprint-css-framework.html' title='Working with Blueprint: A CSS Framework'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1183/1007974311_4619370871_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-2185027162761990213</id><published>2007-07-24T17:14:00.000-04:00</published><updated>2007-07-24T18:00:36.046-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>Dial Up North</title><content type='html'>Dialup sucks, everyone knows it, but it is cheap, free in most cases. Recently MichNet cut all its subscribers off of their dial up internet service which &lt;a href="http://wayne.edu/"&gt;Wayne State&lt;/a&gt; was part of so we were in the market for a dial up service to connect to the net &lt;a href="http://flickr.com/photos/dorkstyle/sets/72157600964210681/"&gt;upnorth&lt;/a&gt;. I decided on NetZero mainly because it was free. My review of the software is that it &lt;span style="font-weight: bold;"&gt;Sucks&lt;/span&gt;. I have used dialup for a while now upnorth but this service is the pits, the free one installs a toolbar on IE, for a while I could not get any other application to connect to the net besides IE which is a real bummer if you need to use SSH or an &lt;a href="http://adiumx.com/"&gt;IM&lt;/a&gt; client. But eventually like magic applications began to come online, I cannot explain it but it made me happy.&lt;br /&gt;&lt;br /&gt;It really put things into perspective for me again on how a lot of people still view the net. It was so slow at some times that I eventually disabled images and then things were flying quite well, but it really showed off which developers have the skill to accommodate this slow pace world. Some things I noticed that really helped were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Using a background-color approximately the same color as an image background. This way if the image background does not load then the text on top still have a background color to contrast against.&lt;/li&gt;&lt;li&gt;Combining images and use background positioning to put them in place. This dramatically reduces the number of images to load. Like I mentioned before images were the real killer of speed when using dial up. Better yet if you can use background colors instead of images it really speeds things up without loosing design points.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Combining Javascript files and using a compressor. This is a no brainier it take almost no effort and helps with slow and fast connections. JS files can get large and they don't have to be, I recommend using an automated compression tool called &lt;a href="http://code.google.com/p/minify/"&gt;Minify&lt;/a&gt;. Really easy to use and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;AJAX. It is odd but it really kept me on sites with AJAX for a longer period of time because the site seemed snappier and I didn't have to wait for the whole page to load over and over again.&lt;/li&gt;&lt;li&gt;If you have image/flash ads on your site really sit back and think if slowing down the information on your site to a portion of internet users is really worth the few cents you may get from them clicking on the ads. Content is king, if a dial up user cannot get to your content because of a large flash or image ad on your site they will more than likely go someplace else that is dial up friendly.&lt;/li&gt;&lt;/ul&gt;Slowing things down really puts the little things into perspective. And it is the little things that matter in life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-2185027162761990213?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/2185027162761990213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=2185027162761990213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/2185027162761990213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/2185027162761990213'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/07/dial-up-north.html' title='Dial Up North'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-6051326600205617461</id><published>2007-07-17T18:54:00.001-04:00</published><updated>2007-07-17T18:54:40.306-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comcast'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>IP Changed :-?</title><content type='html'>So we have had cable internet for probably 12 years now, it first started out with Excite@Home and which got bought out by Comcast. Well in those 12 years I have only had two IP's, one for Excite which was pretty much static 24.*.*.* Those were the good old days when there were no limits and they did not try to control everything. And one for Comcast which is essentially dynamic but i have had to reset my router a few times and it has always come up with the same IP 68.*.*.* Well all of a sudden yesterday of all days they decide to change my IP randomly, without me even renewing it from the router. They changed the whole IP even, doesn't even start with the same A class 69.*.*.*! Now it is more complicated and I have to change all my hosts files on my machines to match :-/ What a hassle, im done venting...&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-6051326600205617461?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/6051326600205617461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=6051326600205617461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/6051326600205617461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/6051326600205617461'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/07/ip-changed.html' title='IP Changed :-?'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-4777806405655472057</id><published>2007-07-16T18:04:00.000-04:00</published><updated>2007-07-16T18:20:37.718-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>PHPSimpl 0.8.2 Feature Update</title><content type='html'>Just keep adding features&lt;br /&gt;So after some time working with the current release we noticed some areas where improvement was needed. So what did we do? We improved in all the wonderful ways below:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added a debug.log file to debug a live site in real time, best used with "tail -f"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added the ErrorMessages() function to summarize a forms errors, similar to Rails.&lt;/li&gt;&lt;li&gt;Added the SetConditions() function so querying for &gt;, &lt;, &lt;=, LIKE and OR's are all possible now.&lt;/li&gt;&lt;li&gt;Added a Get and Set Folder name functions in the Folder Class.&lt;/li&gt;&lt;li&gt;DisplayList() now uses the options of a field to display in the list.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;RowsAffected() now works like it should.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fixed the Debug Query to work again.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Its a Recommended Update&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download &lt;a href="http://phpsimpl.googlecode.com/files/phpsimpl-0.8.2.zip"&gt;PHPSimpl 0.8.2&lt;/a&gt; (97Kb)&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/Installation"&gt;Install Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/BaseClasses"&gt;API and Examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Questions or Comments? Feel free to leave them in the &lt;a href="http://groups.google.com/group/phpsimpl"&gt;PHPSimpl Group&lt;/a&gt;. There is always someone to help available. By the way we love feature requests, keep them coming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-4777806405655472057?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/4777806405655472057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=4777806405655472057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/4777806405655472057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/4777806405655472057'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/07/phpsimpl-082-feature-update.html' title='PHPSimpl 0.8.2 Feature Update'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-8883031756042298608</id><published>2007-07-15T11:19:00.001-04:00</published><updated>2007-07-15T11:19:41.671-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ebay'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Getting Things Done.</title><content type='html'>&lt;a href="http://cgi.ebay.com/Samsung-SPH-M610-Sprint-w-2Gig-Memory-Ton-of-Extras_W0QQitemZ190132063913QQihZ009QQcategoryZ64355QQssPageNameZWDVWQQrdZ1QQcmdZViewItem"&gt;&lt;img src="http://iiskooterii.com/ebay/m610/box_.jpg" style="margin: 0pt 0pt 10px 10px; float: right;" title="Samsung M610" /&gt;&lt;/a&gt;Time has been flying. We have under a year now till the wedding and I have really been trying to get alot of things out of the way and on the right track. &lt;br /&gt;&lt;br /&gt;First is getting &lt;a href="http://flickr.com/photos/dorkstyle/tags/trash/"&gt;rid of a ton of junk&lt;/a&gt; that has been collecting over the years. I threw away all my old computer stuff, just left a few parts which were actually worth some money. And am down to two computers and a laptop.&lt;br /&gt;&lt;br /&gt;I have been &lt;a href="http://search.ebay.com/_W0QQsassZsega-dreamcasterQQhtZ-1"&gt;putting things up&lt;/a&gt; on eBay randomly. Right now I have two old phones and a bluetooth adapter. My mindset is if i have not used something in three months to get rid of it. I have really been trying to minimize the clutter in my life.&lt;br /&gt;&lt;br /&gt;I have been using &lt;a href="http://nickdenardis.blogspot.com/search/label/rails"&gt;Ruby on Rails&lt;/a&gt; more and more and it has grown on me, it is simple, straight to the point and a real enjoyable experience. &lt;br /&gt;&lt;br /&gt;I have also started jogging every day. I got to a point where my appearance really started to bother me and I needed to do something about it. I really have been enjoying jogging and it actually has given me alot more energy.&lt;br /&gt;&lt;br /&gt;I recommend for anyone else who really needs a push into productivity to read both &lt;a href="http://gettingreal.37signals.com/"&gt;Getting Real&lt;/a&gt; and &lt;a href="http://bitliteracy.com/"&gt;Bit Literacy&lt;/a&gt;. &lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-8883031756042298608?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/8883031756042298608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=8883031756042298608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/8883031756042298608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/8883031756042298608'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/07/getting-things-done.html' title='Getting Things Done.'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-1971138036382026015</id><published>2007-07-09T18:08:00.001-04:00</published><updated>2007-07-09T18:08:06.247-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Understanding Rails Partial's</title><content type='html'>Partial's are great, i really wish there was something as straight forward in &lt;a href="http://smarty.php.net"&gt;Smarty&lt;/a&gt;. With Smarty it would require a loop and an include, but partials roll that all into one. It great when you are displaying a list of items, especially if that list can be used in multiple pages in many contexts. &lt;br /&gt;&lt;br /&gt;With PHP you would have to:&lt;br /&gt;&lt;pre&gt;{include file='links.tpl' title='Newest links' links=$link_array}&lt;/pre&gt;Then in links.tpl do the loop:&lt;br /&gt;&lt;pre&gt;&amp;lt;div id="box"&amp;gt;&lt;br /&gt;&amp;lt;h3&amp;gt;{$title}{/h3&amp;gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;{foreach from=$links item=l}&lt;br /&gt;.. do stuff  ...&lt;br /&gt;&amp;lt;/foreach}&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;But Rails on the other hand if you pass a collection to a partial it automatically treats each item in the collection as an individual item and there is no need to create a loop it is done inheritly.&lt;br /&gt;&lt;br /&gt;Rails:&lt;br /&gt;&lt;pre&gt;&amp;lt;%= render :partial =&amp;gt; 'list_item', :collection =&amp;gt; @customers %&amp;gt;&lt;/pre&gt;_list_item.rhtml:&lt;br /&gt;&lt;pre&gt;&amp;lt;tr class="&amp;lt;%= cycle('odd','even') %&amp;gt;"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%= link_to list_item.last_name, &lt;br /&gt;&amp;nbsp; :controller =&amp;gt; 'customer', &lt;br /&gt;&amp;nbsp; :action =&amp;gt; 'show', &lt;br /&gt;&amp;nbsp; :id =&amp;gt; list_item.id %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%= list_item.first_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%= list_item.city %&amp;gt;, &amp;lt;%= list_item.state %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;/pre&gt;You may be thinking that it is really not much less work but writing loops all day long can get tiring especially when they are look the same and do the same thing. Partials take it to the next level and add a real intuitiveness to the loop because it is not just an array of items you are looping through it is actual objects a template is being rendered with.&lt;br /&gt;&lt;br /&gt;Partials can also be used without the collection in just a basic include of a sub template the syntax is below. Useful but I have not found it as much fun.&lt;br /&gt;&lt;pre&gt;&amp;lt;%= render :partial =&amp;gt; "account", :locals =&amp;gt; { :account =&amp;gt; @buyer } %&amp;gt;&lt;/pre&gt;&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-1971138036382026015?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/1971138036382026015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=1971138036382026015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/1971138036382026015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/1971138036382026015'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/07/understanding-rails-partial.html' title='Understanding Rails Partial&amp;#39;s'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-5002291765208323071</id><published>2007-07-08T10:34:00.001-04:00</published><updated>2007-07-08T10:38:18.121-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Starting a Rails Life</title><content type='html'>&lt;img src="http://iiskooterii.com/images/blog/rails.png" style="margin: 0pt 0pt 10px 10px; float: right;" title="Ruby on Rails" /&gt;My rails life seems to be starting out similar to my php life. It all began with an internal application for my dad. He has a music instrument sales, rental and repair business and he initially did everything on paper to keep track of customers, instruments and billing. I took it upon myself to create a web based application for him to keep track of all of it. It was my first php application written in php3 and run on a small server here in the house. It is amazing that it is still running and he still uses it.&lt;br /&gt;&lt;br /&gt;That was 7 years ago and looking back at the code now I cringe. Sometime in between there and now it was upgraded to php4 and it looks like that was a hack of a job. But since then my php life has expanded to the point of it no longer being a challenge. So what else would be a better way to start my Rails life than to revisit my dads billing application and recreate it with rails. Of course fixing all the issues with the current billing process and adding some additional features to make life easier.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/dorkstyle/753483955/" title="photo sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1392/753483955_93bcbea292_m.jpg" alt="" style="margin: 0pt 0pt 10px 10px; float: right;" /&gt;&lt;/a&gt;To the right is a screen shot of the current functionality and design. I am currently just working on getting the layout squared away so functionality can be added without having to stop and think how it should look.&amp;nbsp; So far only 56 lines of code have been written and about 4 hours have been spent on the project, 2.5 being spent coming up with a design and 1 hour spent implementing and tweaking it. So far rails has been a dream come true. &lt;br /&gt;&lt;br /&gt;Coming from php which is mainly mirrored from C++ I have always been use to the long hand conditionals. One thing that rails offers is the "unless" command. Compacting an if statement into one line that can be read without much difficulty. Here is an example of its use, probably not the most efficient but I am sure it will get tweaked once more come into play.&lt;br /&gt;&lt;pre&gt;&amp;lt;%= ' class="selected"' unless controller.controller_name != 'customer' %&amp;gt;&lt;/pre&gt;&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-5002291765208323071?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/5002291765208323071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=5002291765208323071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5002291765208323071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5002291765208323071'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/07/starting-rails-life.html' title='Starting a Rails Life'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1392/753483955_93bcbea292_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-5510349077108487735</id><published>2007-07-06T10:11:00.001-04:00</published><updated>2007-07-06T10:11:32.565-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Making web development fun again</title><content type='html'>Web Development is a passion and like all passions they can become stale after a while unless you continuously look for a new technique to keep it fresh. I have become officially bored with &lt;a href="http://php.net"&gt;PHP&lt;/a&gt;, dont get me wrong it is a great language but after developing in it for over 8 years you start to look for something new and exciting to get that same rush that you get when you learn and implement some new functionality.&lt;br /&gt;&lt;br /&gt;Of course &lt;a href="http://code.google.com/p/phpsimpl/"&gt;PHPSimpl&lt;/a&gt; has been a good release for me, it has really given me an outlet to expand my knowledge and take pride in building something that benefits more than just my development life. I am not stopping development on PHPSimpl, actually I think my additions and bug fixes will get increasingly quicker and better. I cannot leave PHP behind because the web is currently pretty much glued together with it. &lt;br /&gt;&lt;br /&gt;I have fallen in love with &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt;. After using a ton of PHP frameworks none of them really seamed to be straightforward and seamless. Rails on the other hand is not as get up and go as php it has all the requirements I have been looking for in a framework. Some of the excitement is from getting to learn a new language and the structure of a Rails app just make sense.&lt;br /&gt;&lt;br /&gt;My dream has come true, &lt;span style="font-style: italic;"&gt;No More Slop&lt;/span&gt;! PHP is like a blank piece of paper and a pencil, the graphite stays on the paper but it can go in any direction at any time. Its great for when you are feeling creative but horrible when you have to read someone else's paper, it might as well be in a different language. I have always tried to create some structure from PHPSimpl since I lead a team of three developers and we maintain &lt;a href="http://wcs.wayne.edu/portfolio/"&gt;160+ sites&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I played around with Rails about 9 months ago while reading &lt;a href="http://www.pragmaticprogrammer.com/titles/rails/"&gt;Agile Development with Rails&lt;/a&gt; and it really got me thinking about what else is out there. At that time I didn't take it too serious since I was already deep in a &lt;a href="http://autocityimports.com"&gt;redevelopment&lt;/a&gt; which needed it badly. After a few months of PHP development on a large application that was not mine initially I was burned out. This past week I picked up &lt;a href="http://www.sitepoint.com/books/rails1/"&gt;Build Your Own Ruby on Rails Web Applications&lt;/a&gt; and read the whole thing, wow 400 pages I know... but the book was well written and went through the basics all the way to deployment. I recommend it for any developer looking for a change, even if you don't start developing in Rails it gives great insite on how the web should be and can be applied to any language. Agile Development with Rails is a little more intence and is a definite follow up read.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Current Rails Envy:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MVC with a real structured generator&lt;/li&gt;&lt;li&gt;Database Migrations&lt;/li&gt;&lt;li&gt;Templating engine built in&lt;/li&gt;&lt;li&gt;Testing built in&lt;/li&gt;&lt;li&gt;Plugins&lt;/li&gt;&lt;li&gt;One line Scaffold for those quick apps&lt;/li&gt;&lt;li&gt;Fixtures&lt;/li&gt;&lt;li&gt;Simplicity of WEBrick&lt;/li&gt;&lt;li&gt;Logging like a mad man&lt;/li&gt;&lt;/ul&gt;I am in the process of changing to a more Rails friendly host and I will most certainly be writing my Rails entries. Its like starting my web development life all over again, its refreshing.&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-5510349077108487735?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/5510349077108487735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=5510349077108487735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5510349077108487735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5510349077108487735'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/07/making-web-development-fun-again.html' title='Making web development fun again'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-7087077697193408892</id><published>2007-06-27T19:30:00.000-04:00</published><updated>2007-06-27T19:30:11.334-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Stress testing a site with Apache's ab tool, part 1</title><content type='html'>Apache's AB tool is a great way to really put stress on a server. I have compiled a list of the parameters I use to test my sites and applications.&lt;br /&gt;&lt;br /&gt;First we have to make sure AB can hit the desired page and get the desired results. The most basic page is the homepage of a site, use the command below to send as many single requests as it can in 1 second&lt;br /&gt;&lt;pre&gt;ab http://example.com/&lt;/pre&gt;But that is great and dandy but what happens if we want to try to stress a page that hits the database and has to do some actual dynamic work&lt;br /&gt;&lt;pre&gt;ab http://example.com/search.php?q=Trees&lt;/pre&gt;Last but not least what if the site is behind a login that is an http form and not an htaccess form? That is where POST variables come into play, it is a little trickier but doable. Here is the command I use to hit a page behind a login.&lt;br /&gt;&lt;pre&gt;ab -p ~/Documents/post.txt -T application/x-www-form-urlencoded -e http://example.com/manager/&lt;/pre&gt;Here is what my post.txt file contains:&lt;br /&gt;&lt;pre&gt;email=test@domain.com&amp;password=testing&amp;amp;submit=Login&lt;/pre&gt;Next we need to get these results to a file so we can work with them and have a record of progress as we tweak our site. It can be done with the "-e" parameter. An example is below:&lt;br /&gt;&lt;pre&gt;ab http://example.com/search.php?q=Trees -e ~/Documents/results1.csv&lt;br /&gt;&lt;/pre&gt;What that does is hits the search page and puts the results in the results1.csv file. It is useful to put the file at the end of the command since you will want to change the filename on each run to keep a history of your results.&lt;br /&gt;&lt;br /&gt;The csv file is separated into two columns. The first is the percentage complete and the second is the time in ms that it took to get to that percentage.&lt;br /&gt;&lt;br /&gt;The first thing you want to look at is the zero percent. This is your latency, it is the amount of time it takes to fulfill the first request. You want this number to be as low as possible. I am running my site on a development server on my local network so the times will be lower but at the end I will show the results from the testing server.&lt;br /&gt;&lt;pre&gt;ab -p ~/Documents/aci_post.txt -T application/x-www-form-urlencoded -e ~/Documents/aci_output.csv -kc 10 -t 10 http://aci/manager/makes.php&lt;/pre&gt;Hold tight, more coming soon...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-7087077697193408892?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/7087077697193408892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=7087077697193408892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7087077697193408892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7087077697193408892'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/06/stress-testing-with-apaches-ab.html' title='Stress testing a site with Apache&apos;s ab tool, part 1'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-7206098378513623984</id><published>2007-06-27T19:06:00.000-04:00</published><updated>2007-07-16T18:20:50.195-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>PHPSimpl 0.8.1 Maintenance Update</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Cleaning up after a release.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Thanks to everyone who has been using and testing &lt;a href="http://code.google.com/p/phpsimpl/"&gt;PHPSimpl&lt;/a&gt;. After our first official release we wanted to squash some bugs, here is a list of the updates in 0.8.1:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Slightly Updated Example &lt;/li&gt;&lt;li&gt;Fixed the form label "?:" issue &lt;/li&gt;&lt;li&gt;Better support for tables without a primary key &lt;/li&gt;&lt;li&gt;Fixed the SimpleFormat to display values properly and renamed it to Nice() &lt;/li&gt;&lt;li&gt;Change DB now counted as a query &lt;/li&gt;&lt;li&gt;View() now goes off the default field display first &lt;/li&gt;&lt;li&gt;Security Updates related to SQL injection &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Its a Recommended Update&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download &lt;a href="http://phpsimpl.googlecode.com/files/phpsimpl-0.8.1.zip"&gt;PHPSimpl 0.8.1&lt;/a&gt; (96Kb)&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/Installation"&gt;Install Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/BaseClasses"&gt;API and Examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Questions or Comments? &lt;/span&gt;Feel free to leave them in the &lt;a href="http://groups.google.com/group/phpsimpl"&gt;PHPSimpl Group&lt;/a&gt;. There is always someone to help available. By the way we love feature requests, keep them coming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-7206098378513623984?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/7206098378513623984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=7206098378513623984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7206098378513623984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7206098378513623984'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/06/phpsimpl-081-maintance-update.html' title='PHPSimpl 0.8.1 Maintenance Update'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-3590201077231166816</id><published>2007-05-11T21:46:00.000-04:00</published><updated>2007-06-17T06:32:41.526-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>PHPSimpl 0.8.0 Final Released</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Everybody Dance! PHPSimpl has reached its 0.8 release!&lt;/span&gt;&lt;br /&gt;We have been working hard the last few weeks to get &lt;a href="http://code.google.com/p/phpsimpl/"&gt;PHPSimpl&lt;/a&gt; release worthy and the day is finally here! Included in the release are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SetOption now accepts objects &lt;/li&gt;&lt;li&gt;Compressed the JS and CSS for the calendar &lt;/li&gt;&lt;li&gt;Change the time fields to human readable format &lt;/li&gt;&lt;li&gt;Fixed issue with Save() and display_order &lt;/li&gt;&lt;li&gt;Minor bug fixes&lt;/li&gt;&lt;li&gt;A more robust example&lt;/li&gt;&lt;li&gt;Full documentation for the classes with final API's&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Want to try it out?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get your own &lt;a href="http://phpsimpl.googlecode.com/files/phpsimpl-0.8.0.zip"&gt;PHPSimpl 0.8.0&lt;/a&gt; (98Kb)&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/Installation"&gt;Install Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/BaseClasses"&gt;API and Examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Questions or Comments? &lt;/span&gt;Feel free to leave them in the &lt;a href="http://groups.google.com/group/phpsimpl"&gt;PHPSimpl Group&lt;/a&gt;. There is always someone to help available. By the way we love feature requests, keep them coming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-3590201077231166816?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/3590201077231166816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=3590201077231166816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/3590201077231166816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/3590201077231166816'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/05/phpsimpl-080-final-released.html' title='PHPSimpl 0.8.0 Final Released'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-1253738086476696458</id><published>2007-04-26T05:49:00.000-04:00</published><updated>2007-04-26T05:53:57.621-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='simpl'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>PHPSimpl 0.8.0 RC1 Released</title><content type='html'>PHPSimpl 0.8.0 is feature complete and is posted on Google Code. The release candidate will be up for about a week and we will not be adding any more features or API changes. We are only concerted with bug fixed and security issues. Please download it if you are interested in giving it a try and let us know what you think. The final will be out in about a week and we are hoping to have a more feature complete example in it.&lt;br /&gt;&lt;br /&gt;The Links&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/downloads/list"&gt;PHPSimpl 0.8.0 RC 1&lt;/a&gt; Download w/Example (95Kb)&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/Installation"&gt;Install Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/BaseClasses"&gt;API and Examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Please submit any bugs to the &lt;a href="http://code.google.com/p/phpsimpl/issues/list"&gt;Issue List&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-1253738086476696458?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/1253738086476696458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=1253738086476696458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/1253738086476696458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/1253738086476696458'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/04/phpsimpl-080-rc1-released.html' title='PHPSimpl 0.8.0 RC1 Released'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-4370829451284168074</id><published>2007-04-18T10:00:00.000-04:00</published><updated>2007-04-18T10:02:46.223-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><category scheme='http://www.blogger.com/atom/ns#' term='beta'/><title type='text'>PHPSimpl 0.8.0 Beta 1 Released</title><content type='html'>The first beta PHPSimpl has been released to the public. You may be wondering why we decided to start at 0.8, well we have put together a &lt;a href="http://code.google.com/p/phpsimpl/wiki/VersionHistory"&gt;Version History&lt;/a&gt; in the wiki and also a short &lt;a href="http://code.google.com/p/phpsimpl/wiki/Roadmap"&gt;Road Map&lt;/a&gt;. We have been using some form of a DbTemplate at WSU for a while now it just has not been public. Over the past two years it has continued to grow and strengthen. After submitting it to google code initially we knew it still needed some work and we took on the challenge of creating a solid framework that could be easily implemented and rapidly create applications with minimal configuration.&lt;br /&gt;&lt;br /&gt;The Links&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/downloads/list"&gt;PHPSimpl 0.8.0 beta 1&lt;/a&gt; Download w/Example (94Kb)&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/Installation"&gt;Install Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/BaseClasses"&gt;API and Examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Remember this is just a beta, there is still some polishing to do. Although it is working this is still considered Beta software. Please submit any bugs to the &lt;a href="http://code.google.com/p/phpsimpl/issues/list"&gt;Issue List&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-4370829451284168074?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/4370829451284168074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=4370829451284168074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/4370829451284168074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/4370829451284168074'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/04/phpsimpl-080-beta-1-released.html' title='PHPSimpl 0.8.0 Beta 1 Released'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-6463741098448636424</id><published>2007-04-17T07:17:00.000-04:00</published><updated>2007-04-17T07:44:10.963-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>Multiplication</title><content type='html'>The MultiForm() function is here. It allows an entire form or just one form field to be displayed with the [] brackets on the end of the input name. This allows the form to have multiple copies of the same fields in the same form without anything getting overwritten or any additional setup.&lt;br /&gt;&lt;br /&gt;Here is how it is used:&lt;br /&gt;&lt;pre&gt;// Create the Address&lt;br /&gt;$myAddress = new Address;&lt;br /&gt;&lt;br /&gt;// Get a list of all their addresses&lt;br /&gt;$myAddress-&gt;SetValue('customer_id', $myCustomer-&gt;GetPrimary());&lt;br /&gt;$myAddress-&gt;GetList();&lt;br /&gt;&lt;br /&gt;// Display all their current addresses&lt;br /&gt;if (count($myAddress-&gt;results) &gt; 0){&lt;br /&gt; foreach($myAddress-&gt;results as $address){&lt;br /&gt;  $myAddress-&gt;ResetValues();&lt;br /&gt;  $myAddress-&gt;SetValues($address);&lt;br /&gt;  $myAddress-&gt;MultiForm();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;Here is the output:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nzVigbJ6A4o/RiSy2LKdASI/AAAAAAAAAAM/C524fzHONSI/s1600-h/addresses.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_nzVigbJ6A4o/RiSy2LKdASI/AAAAAAAAAAM/C524fzHONSI/s400/addresses.png" alt="" id="BLOGGER_PHOTO_ID_5054361325595853090" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-6463741098448636424?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/6463741098448636424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=6463741098448636424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/6463741098448636424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/6463741098448636424'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/04/multiplication.html' title='Multiplication'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_nzVigbJ6A4o/RiSy2LKdASI/AAAAAAAAAAM/C524fzHONSI/s72-c/addresses.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-3092722751564881004</id><published>2007-04-08T18:54:00.000-04:00</published><updated>2007-04-08T18:57:30.020-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>A More Centered API</title><content type='html'>Its been a while but we have been working hard on an API that is going to withstand the test of time. This will make Simpl more expendable and not require as many application code level changes in the future.&lt;br /&gt;&lt;br /&gt;These function have been added to the Form() Class:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;SetDisplay($fields) -&gt; Boolean&lt;br /&gt;SetHidden($fields) -&gt; Boolean&lt;br /&gt;SetOmit($fields) -&gt; Boolean&lt;br /&gt;SetOptions($options) -&gt; Boolean&lt;br /&gt;SetConfig($config) -&gt; Boolean&lt;/pre&gt;&lt;/blockquote&gt;They can make the DbTemplate and Form classes a lot easier to work with. Here is an example of how to declare a class with these new functions:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;class RSVP extends DbTemplate {&lt;br /&gt;/**&lt;br /&gt; * Class Constuctor&lt;br /&gt; *&lt;br /&gt; * @param $data array&lt;br /&gt; * @return null&lt;br /&gt; */&lt;br /&gt;function __construct($data=''){&lt;br /&gt;  // Setup the required fields&lt;br /&gt;  $required = array('first_name', 'last_name', 'email', 'phone', 'is_attending');&lt;br /&gt;  // Setup their labels&lt;br /&gt;  $labels = array('first_name' =&gt; 'First Name', 'last_name' =&gt; 'Last Name', 'email' =&gt; 'E-Mail', 'is_attending' =&gt; 'Attending');&lt;br /&gt;  // Setup the examples&lt;br /&gt;  $examples = array('email' =&gt; 'name@domain.com');&lt;br /&gt;&lt;br /&gt;  // Call the Parent Constructor&lt;br /&gt;  $this-&gt;DbTemplate($data, $required, $labels, $examples, 'rsvp', '', 'my_database');&lt;br /&gt; &lt;br /&gt;  // Set the Display&lt;br /&gt;  $display = array('first_name', 'last_name', 'email', 'phone', 'is_attending');&lt;br /&gt;  $this-&gt;SetDisplay($display);&lt;br /&gt;&lt;br /&gt;  // Add a validation Type&lt;br /&gt;  $this-&gt;Set('validate','homepage', 'url');&lt;br /&gt;&lt;br /&gt;  // Set the defaults&lt;br /&gt;  $defaults = array('is_attending' =&gt; 1);&lt;br /&gt;  $this-&gt;SetDefaults($defaults);&lt;br /&gt;&lt;br /&gt;  // Set the Options&lt;br /&gt;  $options = array('is_attending' =&gt; array('1' =&gt; 'Yes', '0' =&gt; 'No'));&lt;br /&gt;  $this-&gt;SetOptions($options);&lt;br /&gt;&lt;br /&gt;  // Set the Config&lt;br /&gt;  $config = array('is_attending'=&gt;'radio');&lt;br /&gt;  $this-&gt;SetConfig($config);&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;Now the display and the config information follow the class where ever it is used. Also the default values can be used to set up the form before the user enters any information.&lt;br /&gt;&lt;br /&gt;Example of this being used on the page:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;// Create an RSVP Instance&lt;br /&gt;$myRSVP = new RSVP;&lt;br /&gt;&lt;br /&gt;// Display the form&lt;br /&gt;echo '&amp;lt;form&amp;gt;';&lt;br /&gt;$myRSVP-&gt;Form();&lt;br /&gt;echo '&amp;lt;input name="submit" value="Save" type="submit"&amp;gt;';&lt;br /&gt;echo '&amp;lt;/form&amp;gt;';&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-3092722751564881004?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/3092722751564881004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=3092722751564881004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/3092722751564881004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/3092722751564881004'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/04/more-centered-api.html' title='A More Centered API'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-8250965898559772159</id><published>2007-03-10T16:52:00.000-05:00</published><updated>2007-05-12T19:53:23.028-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='simpl'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>PHP Sessions in a Load Balanced Environment</title><content type='html'>One thing that we struggle with in our server environment as many others do is doing load balancing and being able to sync session data between all the machines. Having one dedicated session space or server can be an option but that can get a little messy or expensive. So we added MySQL Sessions to the Simpl framework and it is easy as pie to use.&lt;br /&gt;&lt;br /&gt;Originally adopted from &lt;a href="http://www.josephcrawford.com/php-articles/going-deep-inside-php-sessions/"&gt;Joseph Crawford&lt;/a&gt; but implemented completely in Simpl. Josephs was great except it seemed to be connected to a larger whole. The bits and pieces were there for the session but they just needed to be combined with a framework. Below is a fully featured example working and usable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prerequisits:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/phpsimpl/"&gt;PHPSimpl&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;MySQL Database Connection&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"session" Table&lt;br /&gt;&lt;pre&gt;CREATE TABLE `session` (&lt;br /&gt;`ses_id` varchar(32) NOT NULL,&lt;br /&gt;`last_access` int(12) unsigned NOT NULL,&lt;br /&gt;`ses_start` int(12) unsigned NOT NULL,&lt;br /&gt;`ses_value` text NOT NULL,&lt;br /&gt;PRIMARY KEY  (`ses_id`)&lt;br /&gt;) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Used to store the sessions data';&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Usage Steps:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download and copy Simpl to the web server.&lt;/li&gt;&lt;li&gt;Define some base items&lt;br /&gt;&lt;pre&gt;// Directories&lt;br /&gt;// Always Include trailing slash "/" in Direcories&lt;br /&gt;define('DIR_ABS', '/usr/local/www/');&lt;br /&gt;define('FS_SIMPL', DIR_ABS . 'simpl/');&lt;br /&gt;define('FS_CACHE', DIR_ABS . 'cache/');&lt;br /&gt;&lt;br /&gt;// Enable Database Sessions&lt;br /&gt;define('DB_SESSIONS', true);&lt;br /&gt;&lt;br /&gt;// Database Connection Options&lt;br /&gt;define('DB_USER', 'username');&lt;br /&gt;define('DB_HOST', 'localhost');&lt;br /&gt;define('DB_PASS', 'password');&lt;br /&gt;define('DB_DEFAULT', 'site_data');&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Include the framework&lt;br /&gt;&lt;pre&gt;// Simpl Framework&lt;br /&gt;include_once(FS_SIMPL . 'simpl.php');&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Connect to the database&lt;br /&gt;&lt;pre&gt;// Make the DB Connection&lt;br /&gt;$db = new DB;&lt;br /&gt;$db-&gt;Connect();&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Use the $_SESSION super global just as you normally would and PHPSimpl does all the work for you.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The only modification may be the page cannot close the database connection since the _SESSION variable has to be written after the page is completely loaded and thus must still have the connection available.&lt;br /&gt;&lt;br /&gt;Simpl and the $db object to all the hard work of redirecting the session data and pulling it from the database. No need to call a session_start() or even interact with the session table.&lt;br /&gt;&lt;br /&gt;If you are interested in what the Session class looks like here is the source code:&lt;br /&gt;&lt;a href="http://phpsimpl.googlecode.com/svn/trunk/simpl/session.php"&gt;Session.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-8250965898559772159?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/8250965898559772159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=8250965898559772159' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/8250965898559772159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/8250965898559772159'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/03/php-sessions-in-load-balanced.html' title='PHP Sessions in a Load Balanced Environment'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-3858274607981216470</id><published>2007-02-18T09:38:00.000-05:00</published><updated>2007-02-18T09:44:33.464-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>Simpl API Documentation</title><content type='html'>So we started to document the Simpl API, which is quite a large task since we did not start the documentation process tilll the API was almost complete. Although Simpl has almost full JavaDoc documentation throughout the source it is a pain to open up the source every time you need to look up the parameters to a function call. So we started to document all the classes, functions, examples of their use and return values at the projects homepage wiki. Most of the classes are in there now and more will be added shortly. If you would like to contribute to the documentation effort just let me know and I can add you to the list.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Wiki:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/phpsimpl/w/list"&gt;http://code.google.com/p/phpsimpl/w/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Base Classes:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/phpsimpl/wiki/BaseClasses"&gt;http://code.google.com/p/phpsimpl/wiki/BaseClasses&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-3858274607981216470?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/3858274607981216470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=3858274607981216470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/3858274607981216470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/3858274607981216470'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/02/simpl-api-documentation.html' title='Simpl API Documentation'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-7559781800696037622</id><published>2007-02-18T08:55:00.000-05:00</published><updated>2007-02-18T09:35:46.485-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>New Simpl caching system</title><content type='html'>It has been a little bit but a few things have happened in the past month or so. We implemented a new caching system that will speed up the saving and retrieving of table cache to the filesystem. There is no change in the API, the only thing that you will notice is that the cache now has a "table_*.cache.php" naming format. This was changed to distinguish it from the other caches that have been implemented in the past month.&lt;br /&gt;&lt;br /&gt;The other caching that has been implemented is the query cache. This is a simple system that is enabled by a boolean define named "QUERY_CACHE", if it is set to true every time a "SELECT" query comes through $qb-&gt;Query() it saves its results to a file. So next time the same query comes around there is no need to re-query the database for the same information it is already available in the cache. This query will stay in cache till $db-&gt;Perform() is called which at that time all the query caches are cleared out. We have found this is a significant increase in performance for large queries that require a few joins and sorting.&lt;br /&gt;&lt;br /&gt;This also brings up the situation where possibly all the queries on the page are found in cache and we got to thinking why even bother connecting to the database unless we really need to. So Simpl now will not connect to the database until the first query comes by that could not be found in cache. We have found that this also improves performance especially if the database is on a separate machine. There is only one downside to this addition, when calling $db-&gt;Connect() it will always return true since it just stores the database information and waits for the first query, you will no longer be able to check on connect if the database is available or not, it will always look available.&lt;br /&gt;&lt;br /&gt;The last functionality that was added was the deprecation of the "CLEAR_CACHE" define. Currently it is still working for backwards compatibility but will soon be removed. It has been replaced by the use of a GET variable that can be used on any page.  There are two that will be able to clear specific caches and one that will clear all the caches.&lt;br /&gt;&lt;pre&gt;page.php?clear -&gt; Clears all the caches (table and query)&lt;br /&gt;page.php?clear_query -&gt; Clears just the query cache&lt;br /&gt;page.php?clear_table -&gt; Clears just the table cache&lt;/pre&gt;You can call these GET variables on any page that creates the "mySimpl" class and the cache will be cleared.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-7559781800696037622?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/7559781800696037622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=7559781800696037622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7559781800696037622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/7559781800696037622'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2007/02/new-simpl-caching-system.html' title='New Simpl caching system'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-6050444066810105148</id><published>2006-12-08T19:50:00.000-05:00</published><updated>2006-12-08T19:52:40.475-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>Simpl Join()!</title><content type='html'>Its amazing how much code can be reduced by using a framework, especially a framework that accomplishes all the most basic elements without interfering with usability.  With &lt;a href="http://code.google.com/p/phpsimpl/"&gt;Simpl&lt;/a&gt; we are trying to accomplish just that. So we recognized the problem of information being in two different tables and having two queries just was not cutting it. So we are proud to announce the Join() function in DbTemplate. This is now integrated into the examples also to get you up and running with it.&lt;br /&gt;&lt;br /&gt;Here is a sample code snipit of joining the Registration, User and Payments tables to view information all in one list with one query:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;// Create the Registration class&lt;br /&gt;$myRegistration = new Registration;&lt;br /&gt;$display[] = array('registration_id','user_id','date_registered','guests');&lt;br /&gt;&lt;br /&gt;// Create the User Class&lt;br /&gt;$tmpUser = new Users;&lt;br /&gt;$myRegistration-&gt;Join($tmpUser, 'user_id', 'INNER');&lt;br /&gt;$display[] = array('first_name','last_name');&lt;br /&gt;&lt;br /&gt;// Create the Payments Class&lt;br /&gt;$tmpPayment = new Payment;&lt;br /&gt;$myRegistration-&gt;Join($tmpPayment, 'conference_id', 'INNER');&lt;br /&gt;$display[] = array('conference_id', 'amount', 'status', 'method');&lt;br /&gt;&lt;br /&gt;// Get a list of all the Registrations&lt;br /&gt;$myRegistration-&gt;GetList($display,'date_registered','DESC');&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Questions or Concerns? Head over to our &lt;a href="http://groups-beta.google.com/group/phpsimpl"&gt;Simpl Group&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-6050444066810105148?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/6050444066810105148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=6050444066810105148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/6050444066810105148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/6050444066810105148'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2006/11/simpl-join.html' title='Simpl Join()!'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-1552690338908191992</id><published>2006-12-08T19:31:00.000-05:00</published><updated>2006-12-08T19:45:17.796-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>Just added, Output individual fields</title><content type='html'>So &lt;a href="http://code.google.com/p/phpsimpl/"&gt;PHP Simpl&lt;/a&gt; does a good job of outputting an XHTML form with very extend able features such as labels, required *'s, size and maxlength calculation, example and error output automatically. But have you ever just wanted to output the form in your own way? Well now you can, this can be accomplished with the FormField() function inside the DbTemplate class. It handles all that same great XHTML formatting, you just have to worry about where you want to flied to be displayed.&lt;br /&gt;&lt;br /&gt;Function Prototype:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;public function FormField($field, $hidden=false, $options='', $config='');&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;$myPost = new Post;&lt;br /&gt;$hidden = false;&lt;br /&gt;$options = array();&lt;br /&gt;$config = array();&lt;br /&gt;&lt;br /&gt;echo '&amp;lt;form&amp;gt;';&lt;br /&gt;$myPost-&gt;FormField('title', $hidden, $options, $config);&lt;br /&gt;echo '&amp;lt;input name=&amp;quot;submit&amp;quot; value=&amp;quot;Save&amp;quot; type=&amp;quot;submit&amp;quot;&amp;gt;';&lt;br /&gt;echo '&amp;lt;/form&amp;gt;';&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-1552690338908191992?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/1552690338908191992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=1552690338908191992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/1552690338908191992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/1552690338908191992'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2006/12/just-added-output-individual-fields.html' title='Just added, Output individual fields'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-2752522266540149995</id><published>2006-11-05T11:36:00.000-05:00</published><updated>2006-11-06T21:26:19.009-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='phpsimpl'/><title type='text'>PHP Simpl Examples</title><content type='html'>&lt;a href="http://code.google.com/p/phpsimpl/"&gt;PHP Simpl&lt;/a&gt; is a framework that is constantly evolving, and to help anyone who is interested in using the framework we are putting examples in the SVN repo. As of &lt;a href="http://phpsimpl.googlecode.com/svn/"&gt;rev 125&lt;/a&gt; we will continuously be adding to the examples folder which will outline the functionality of Simpl and get you up an running in no time. Currently there is just a show blog type application in there but we will be expanding it. Also if you have a good idea for an example or would like to submit your own just post in our &lt;a href="http://groups-beta.google.com/group/phpsimpl"&gt;group&lt;/a&gt; and we will be sure to help you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-2752522266540149995?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/2752522266540149995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=2752522266540149995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/2752522266540149995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/2752522266540149995'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2006/11/php-simpl-examples.html' title='PHP Simpl Examples'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-2600500636465264667</id><published>2006-11-05T11:27:00.000-05:00</published><updated>2006-11-05T11:36:08.033-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='school'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Proxy Midterm Update</title><content type='html'>For our midterm in &lt;a href="http://www.cs.wayne.edu/%7Eweisong/courses/csc5250-f06/"&gt;CSC5250&lt;/a&gt; we were given the task to create an http proxy that handles GET/POST/HEAD requests. Well it all went well and my group got a 100%. The proxy actually preforms very well and handles most pages out there, and has a pretty sophisticated caching engine. Although there is a few drawbacks when the page uses some odd connection types to get its information and multi part POST's don't seem to be working but all in all we are very proud how it came out. I will probably be posting the code somewhere to get it out in the public and maybe a viable small scale proxy. We will have to wait till the end of the semester and get approval from my partner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-2600500636465264667?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/2600500636465264667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=2600500636465264667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/2600500636465264667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/2600500636465264667'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2006/11/proxy-midterm-update.html' title='Proxy Midterm Update'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-5214665878038627791</id><published>2006-10-20T07:17:00.000-04:00</published><updated>2006-10-22T10:11:36.495-04:00</updated><title type='text'>PHP Simpl, An Introduction</title><content type='html'>&lt;a href="http://code.google.com/p/phpsimpl/"&gt;PHP Simpl&lt;/a&gt; is a a PHP framework for rapidly creating classes that mirror MySQL tables. The framework comes with the basic functions to list, display and edit records from the database. With this framework a simple manager and front of a site can be created within a few minutes. An example database, manager and front end are included with the framework.&lt;br/&gt;&lt;br/&gt;Since this is a very new framework an introduction is in order.&lt;br/&gt;&lt;br/&gt;First, Download the framework, we host it on &lt;a href="http://code.google.com/p/phpsimpl/"&gt;Google Code&lt;/a&gt; and you can download it via Subversion.&lt;br/&gt;&lt;br/&gt;Second, Put it on a server that supports &lt;a href="http://php.net"&gt;PHP&lt;/a&gt; and &lt;a href="http://mysql.com/"&gt;MySQL&lt;/a&gt;. It does not have to be in a web viewable directory but currently it is recommended to be in /public_html/ root.&lt;br/&gt;&lt;br/&gt;Setup the defines. There are a few defines that are nessisary to run PHP Simpl these must be declaired before the include of the class.&lt;br/&gt;&lt;blockquote&gt;define('FS_SIMPL', '/public_html/simpl/');&lt;br/&gt;define('DB_USER','user');&lt;br/&gt; define('DB_HOST','localhost');&lt;br/&gt; define('DB_PASS','pass');&lt;br/&gt; define('DB_DEFAULT','my_blog');&lt;br/&gt;define('DEBUG',false);&lt;br/&gt; define('DEBUG_QUERY',false);&lt;br/&gt; define('USE_CACHE',true);&lt;br/&gt; define('CLEAR_CACHE',false);&lt;/blockquote&gt;&lt;br/&gt;The first one is manditory the rest are not, but it is a good idea to define them if you do not want to go into the main PHP Simpl config to change to debug mode or to clear the cache when you want to.&lt;br/&gt;&lt;br/&gt;Next include the main class then load any helper classes you may need. This must be done before you include your own classes file.&lt;br/&gt;&lt;blockquote&gt;include_once(FS_SIMPL . 'simpl.php');&lt;br/&gt; $mySimpl-&gt;Load('Form');&lt;br/&gt; $mySimpl-&gt;Load('Db');&lt;br/&gt; $mySimpl-&gt;Load('DbTemplate');&lt;br/&gt; $mySimpl-&gt;Load('Folder');&lt;br/&gt; $mySimpl-&gt;Load('File');&lt;br/&gt; $mySimpl-&gt;Load('Upload');&lt;br/&gt; $mySimpl-&gt;Load('Image');&lt;/blockquote&gt;&lt;br/&gt;Now that you have PHPSIMPL up and running to write a simple class to mirror a mysql database table it is as simple as the example below.&lt;br/&gt;&lt;blockquote&gt;class  Post extends DbTemplate {&lt;br/&gt;   function Post($data=''){&lt;br/&gt;      $this-&gt;required = array('title','body');&lt;br/&gt;      $this-&gt;table = 'blog_post';&lt;br/&gt;      $labels =     array('is_published'=&gt;'Published:','user_id'=&gt;'Author:','category_id'=&gt;'Category:');&lt;br/&gt;      $examples = array('category_id'=&gt;'ex. PHP, MySQL, Cars, XML, PHPSIMPL');&lt;br/&gt;       $this-&gt;DbTemplate($data, $this-&gt;required, $labels, $examples, $this-&gt;table);&lt;br/&gt;   }&lt;br/&gt;}&lt;/blockquote&gt;&lt;br/&gt;And you are done, this Post class now has full interaction with the database table. You can use the helper GetValue() and SetValue() functions to get and set field values and all the helper functions to interact. You can also write custom functions just like you always would if you were not using PHP Simpl. A full list of functions and their parameters will be published soon, if you cannot wait just simply look through the PHP Simpl source, everything is commented in JavaDoc format for ease of use.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-5214665878038627791?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/5214665878038627791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=5214665878038627791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5214665878038627791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5214665878038627791'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2006/10/php-simpl-introduction.html' title='PHP Simpl, An Introduction'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-8919270623417234077</id><published>2006-10-15T09:32:00.000-04:00</published><updated>2006-10-15T09:53:58.845-04:00</updated><title type='text'>Proxy Project Going Good.</title><content type='html'>So I finally got my new Mini and my new &lt;a href="http://flickr.com/photos/dorkstyle/270147245/"&gt;Desk&lt;/a&gt; all setup. Thats all i wanted to say. Oh yea and we are finally seriously working on a new look for the &lt;a href="http://wayne.edu/"&gt;Wayne State University&lt;/a&gt; homepage, it desperately needs it (from a back end and management standpoint, the frontend pretty much just needs a &lt;a href="http://alistapart.com/articles/redesignrealign"&gt;realign&lt;/a&gt;), four years old and designed by a company that went out of business. Now that we have the &lt;a href="http://wcs.wayne.edu/"&gt;tools&lt;/a&gt; in place we can get it setup right.&lt;br /&gt;&lt;br /&gt;Also check out my &lt;a href="http://www.technorati.com/claim/qtd8uez55g" rel="me"&gt;Technorati Profile&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-8919270623417234077?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/8919270623417234077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=8919270623417234077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/8919270623417234077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/8919270623417234077'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2006/10/proxy-project.html' title='Proxy Project Going Good.'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-5428729085181598355</id><published>2006-10-04T21:45:00.000-04:00</published><updated>2006-11-05T11:36:22.371-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beta'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Groups Beta... Impressed.</title><content type='html'>So Google has launched a &lt;a href="http://groups-beta.google.com/"&gt;Beta Groups&lt;/a&gt; site and I have been using it for a while now and all I can say is I am pretty impressed. It has kept my attention alot longer than I was planning to be reading my groups.  For one the interface is alot better, this are orgainized into clusters and there is alot more options. I found I was totally side track configuring &lt;a href="http://groups-beta.google.com/group/phpsimpl"&gt;my group&lt;/a&gt;. Anyays the user manament is a million times better I have not had time to play with the Page Creator or the File Upload yet. One thing that i could not get to work, but it more than likely was my fault is the image upload for the user icon would not save for me. Oh well ill have to try it again tomorow.&lt;br /&gt;&lt;br /&gt;Oh yea I am still waiting for a shipping date for my &lt;a href="http://nickdenardis.blogspot.com/2006/10/time-for-new-computer.html"&gt;new Mac&lt;/a&gt;. :-/ Hopefully soon i can get down to some real development outside of &lt;a href="http://wcs.wayne.edu/"&gt;work&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-5428729085181598355?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/5428729085181598355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=5428729085181598355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5428729085181598355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/5428729085181598355'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2006/10/groups-beta-impressed.html' title='Groups Beta... Impressed.'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2662743856081682045.post-6152705423832304038</id><published>2006-10-01T13:00:00.000-04:00</published><updated>2006-10-01T10:10:12.492-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='home'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Time for a new computer</title><content type='html'>So i broke down today and i bought a new computer. Well it is going to replace my current first generation &lt;a href="http://flickr.com/photos/dorkstyle/257325906/" target="_blank"&gt;Mac Mini&lt;/a&gt; G4 1.42 Ghz. Basically i found myself pretty much waiting 60% of the time instead of programming. Just having Eclipse, Photoshop, Apache, Firefox and iTunes open grinds this little machine to a halt. My solution yesterday was to just remote into my &lt;a href="http://flickr.com/photos/dorkstyle/150722095/" target="_blank"&gt;work machine&lt;/a&gt; and do all my work on that, it worked well but it is not a permanent solution. With my mom getting a new &lt;a href="http://www.apple.com/imac/" target="_blank"&gt;20" iMac&lt;/a&gt; and the new Intel chips smoking the pants off the PowerPC chips i needed to upgrade. Also this will allow me to get rid of my Windows box for good, i will be running &lt;a href="http://www.parallels.com/" target="_blank"&gt;Parallels&lt;/a&gt; for any future Windows needs. The setup i ordered is not like super awesome impressive but it will do for now.&lt;br /&gt;&lt;blockquote&gt;Mac Mini&lt;br /&gt;1.83GHz Intel Core Duo&lt;br /&gt;2GB 667 DDR2 SDRAM-2x1GB&lt;br /&gt;120GB Serial ATA drive&lt;br /&gt;SuperDrive 8x&lt;/blockquote&gt;&lt;br /&gt;A MacPro and a Mac Book Pro is on my wish list but not essential at this point. Once my &lt;a href="http://autocityimports.com/" target="_blank"&gt;current project&lt;/a&gt; which is a total back/front end re-development of their current architecture gets up and running ill need a more robust environment.&lt;br /&gt;&lt;br /&gt;If anyone is interested i am selling my windows box, currently i am not selling the monitors (two 19" BenQ flat panels) but i will consider it if someone is interested, here is the setup:&lt;br /&gt;&lt;blockquote&gt;AMD Athlon 3200+&lt;br /&gt;512 Mb PC-3200&lt;br /&gt;160 Gig, 2 SATA 150 drives in RAID-0&lt;br /&gt;Nvidia Geforce FX 5700 Ultra&lt;br /&gt;DVD-Rom&lt;br /&gt;DVD-Burner DL 8x&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2662743856081682045-6152705423832304038?l=nickdenardis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nickdenardis.blogspot.com/feeds/6152705423832304038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2662743856081682045&amp;postID=6152705423832304038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/6152705423832304038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2662743856081682045/posts/default/6152705423832304038'/><link rel='alternate' type='text/html' href='http://nickdenardis.blogspot.com/2006/10/time-for-new-computer.html' title='Time for a new computer'/><author><name>Nick DeNardis</name><uri>http://www.blogger.com/profile/04227161205154838614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_nzVigbJ6A4o/SVeppgb9BeI/AAAAAAAAADY/9DV8ZaIY14U/S220/profile-photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
