<?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-3661291340759401450</id><updated>2011-11-27T15:38:35.774-08:00</updated><category term='apache'/><category term='linux'/><category term='facebook'/><category term='exam'/><category term='synergy'/><category term='mysql'/><category term='web'/><category term='php'/><category term='development'/><category term='ads'/><category term='hosting'/><category term='advertising'/><category term='server 2003'/><category term='dreamspark'/><category term='private'/><category term='online'/><category term='firefox'/><category term='certification'/><category term='ultramon'/><category term='software'/><category term='extension'/><category term='coding'/><category term='server'/><category term='microsoft'/><category term='virtual'/><category term='windows'/><category term='developer'/><category term='kvm'/><category term='zend'/><category term='wamp'/><category term='dual monitor'/><category term='vps'/><title type='text'>Bryan Psimas</title><subtitle type='html'>Software Development Blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-5104718680303166346</id><published>2009-08-21T13:18:00.000-07:00</published><updated>2011-01-30T14:31:02.636-08:00</updated><title type='text'>Amazon Mechanical Turk</title><content type='html'>Ever wish you could instantly and easily outsource large amount of mundane work that would take you hours to complete? I recently started a website, &lt;a href="http://www.campusdininghours.com/"&gt;Campus Dining Hours&lt;/a&gt; and came across this need. My website lets you see what's open on your college campus. It will highlight any listing that are open at the time when you visit the website. I have collected hours for over 100 college campuses by writing a script to compile this information from various sources.&lt;br /&gt;&lt;br /&gt;However, the problem came when I needed more information about these schools. I had a list of school names and hours, but I needed to collect the school website, zip code, time zone (for highlighting), and abbreviation. (ex. UCLA) This is a very simple task, but it would be a very tedious task for over 100 campuses and I needed to have it done as soon as possible. I heard about &lt;a href="http://www.mturk.com/"&gt;Amazon's Mechanical Turk&lt;/a&gt;, a while back, but I didn't have anything in mind to put the service to good use until now. Thus, I logged into my Amazon account and signed up as a Requestor for Amazon's Mechanical Turk. It was surprisingly easy to create new HITs, or Human Intelligence Tasks.&lt;br /&gt;&lt;br /&gt;The first step was &lt;span style="font-weight: bold;"&gt;Design&lt;/span&gt;, in which you layout the information needed and create a simple form for users to fill out. You add input variables, which will change for each new task. You can also set the amount you will pay for each task. The amount is usually a few pennies depending on the task. If your task takes 30 seconds on average and you pay $0.05 per HIT, that is a wage of $6.00 per hour for the worker.&lt;br /&gt;&lt;br /&gt;Then second step is to &lt;span style="font-weight: bold;"&gt;Publish&lt;/span&gt; and uploading your input data. In my case, this was as simple as uploading a CSV text file with the appropriate input fields at the top. Each row in the spreadsheet will create a new HIT with your template variables automatically filled in. Then Publish and that's it! Now the fun part.&lt;br /&gt;&lt;br /&gt;My results started coming in immediately! I had gathered all of my results within a matter of hours, and I approved all HITs. You can easily export your result to a CSV text file, which will contain your input columns, then any fields you created in your form template for the user to fill in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-5104718680303166346?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/5104718680303166346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=5104718680303166346' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/5104718680303166346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/5104718680303166346'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2009/08/amazon-mechanical-turk.html' title='Amazon Mechanical Turk'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-2712656613794874446</id><published>2009-01-02T18:51:00.000-08:00</published><updated>2011-04-09T01:04:48.046-07:00</updated><title type='text'>My First Android App</title><content type='html'>I wrote my first application, a Tetris clone, for my new T-Mobile G1 phone. The phone runs Google's new &lt;a href="http://www.android.com/"&gt;Android &lt;/a&gt;operating system. A few years ago,  I wrote a version of Tetris in Java. Android apps are also written in Java, so it didn't require significant change to adapt my game to the phone. Writing applications for Android was surprisingly easy after everything was configured. Google provides a wealth of information for &lt;a href="http://code.google.com/android/intro/index.html"&gt;getting started&lt;/a&gt; on writing your own Android applications.&lt;br /&gt;&lt;br /&gt;Once you have Eclipse configured, you can easily compile and run your applications with the click of a button. When you run your application, you can choose to run it in the Android Emulator or if you have your phone plugged in via USB, you can run it directly on your phone. For the latter option, you do not need a special developer phone, you simply enable USB Debugging on your phone. Very easy!&lt;br /&gt;&lt;br /&gt;The Android &lt;a href="http://code.google.com/android/reference/index.html"&gt;documentation&lt;/a&gt; is similar to the Java API reference and very easy to use. Google has also provided a number of sample programs and source code. Additionally, many Android apps are open source. With so many free apps on the Market already, it will be interesting to see what companies can come up with once apps are for sale on the Market.&lt;br /&gt;&lt;br /&gt;Feel free to download my &lt;a href="http://www.currentdimension.com/Tetris.apk"&gt;Tetris APK&lt;/a&gt;. Roll the track ball up to rotate blocks, then roll left and right to move blocks as they fall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-2712656613794874446?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/2712656613794874446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=2712656613794874446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/2712656613794874446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/2712656613794874446'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2009/01/cool-android-applications.html' title='My First Android App'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-5399143266080853220</id><published>2008-08-08T19:20:00.000-07:00</published><updated>2010-04-04T02:17:35.533-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='online'/><category scheme='http://www.blogger.com/atom/ns#' term='advertising'/><category scheme='http://www.blogger.com/atom/ns#' term='ads'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><title type='text'>Facebook Advertising</title><content type='html'>I recently decided to try out &lt;a href="http://www.facebook.com/ads/"&gt;Facebook Ads&lt;/a&gt;. Many people typically think of Facebook just as a social networking site and not as an advertising platform. Facebook's Ads Manager is an incredible tool that easily allows you to reach target audiences. I've always enjoyed Facebook ads. (the text+graphic ads, not the skyscraper graphic ads) They blend in well with the site, but still catch your attention. Each Ad has a small image, plus a short blurb of text describing the Ad. The Ads are inviting and relevant enough that I have clicked on them.&lt;br /&gt;&lt;br /&gt;Signing up for the service was very simple. I didn't need to enter an email address or create a new username / password. I simply logged into my Facebook account and clicked the link for Advertisers. The first step was to create my advertisement. The user interface was very easy to use. It is consistent with Facebook's look and feel, which is simple yet powerful. Their liberal yet appropriate use of AJAX makes it a very painless process.&lt;br /&gt;&lt;br /&gt;In my opinion, the best part about Facebook ads is the ability to target your users very specifically. Facebook's large user base makes it easy to narrow down your target audience. You can select from a wide variety of criteria to filter your ads:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Location&lt;/li&gt;&lt;li&gt;Sex&lt;/li&gt;&lt;li&gt;Age&lt;/li&gt;&lt;li&gt;Keywords&lt;/li&gt;&lt;li&gt;Education Status&lt;/li&gt;&lt;li&gt;College, Major, Degree&lt;/li&gt;&lt;/ul&gt;Keywords are very powerful. Keywords includes a user's interests, favorite music, movies, job titles, and other information on their Facebook profile. Facebook doesn't need advertising preferences from users, because they already have everything from their profile. Facebook Ads are not very expensive either. I found that the cost-per-click is similar, maybe slightly more, to running the same Ad running on Google Adwords. Since you are bidding on advertisement slots, this will vary greatly depending on how many other advertisers are trying to reach the same audience.&lt;br /&gt;&lt;br /&gt;One minor annoyance is Facebook's minimum &lt;span style="font-style: italic;"&gt;daily cap &lt;/span&gt;of $5 on advertising. This means that you could be charged up to $5 per day while your ad is running and you cannot lower this amount. For small businesses, this could add up to $1,825 per year, which might be a lot to spend on Facebook Ads. Google Adwords and other platforms are very flexible in this respect and give you options to decide how quickly you wish to spend your budget. (immediately vs. evenly) Fortunately, Facebook Ads allows you to narrow down your audience very specifically. You can choose CPC (cost per click) or CPM (cost per 1000 impressions). Compared to other platforms, Facebook doesn't offer many features beyond targeting your audience. Still, I highly recommend trying out Facebook Ads if you currently advertise online. It can result in high conversion rates since you are able to choose exactly who can see your ad.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;The minimum daily cap for Facebook Ads has been changed to $1.00.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-5399143266080853220?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/5399143266080853220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=5399143266080853220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/5399143266080853220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/5399143266080853220'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2008/08/facebook-advertising.html' title='Facebook Advertising'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-2855331906408884949</id><published>2008-08-01T11:45:00.000-07:00</published><updated>2010-03-14T15:10:50.144-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dreamspark'/><category scheme='http://www.blogger.com/atom/ns#' term='server 2003'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Windows Server 2003</title><content type='html'>Windows Server 2003 is an expensive operating system, about $500 depending on the version. Being a college student, I found that I was able to obtain a free copy of Windows Server 2003 through Microsoft's &lt;a aiotitle="Dreamspark program" href="http://www.dreamspark.com/"&gt;DreamSpark program&lt;/a&gt;. They also offer Visual Studio 2008 and other Microsoft development software to students at no cost.&lt;br /&gt;&lt;br /&gt;The operating system is available as an ISO image that I was able to download and burn to a DVD. The default installation works great, and only requires a few customizations. The OS starts up and shuts down surprisingly fast. Overall, I am pleased with the operating system. If you prefer a Windows operating system, then Windows Server 2003 is a great option even as a desktop OS. It runs very stable. It is still a Microsoft OS, but it's not XP or Vista. It is similar to Vista, but without all the problems and a cleaner user interface. It reminds me of Windows 2000 vs. XP. If you are a student, then grab a free copy through the &lt;a href="http://www.dreamspark.com/"&gt;Microsoft DreamSpark&lt;/a&gt; program. I am not sure that I purchase the software for my desktop computer, but it shows that Microsoft can actually create a lean, stripped down, stable operating system for servers. I did not run into any issues installing drivers or software on my custom built computer. Some software needs to be run in compatibility mode. To do this, right click on the executable you wish to run and goto Properties. Then under the Compatibility tab, select Windows XP and press OK. You should now be able to run most software that works under Windows XP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-2855331906408884949?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/2855331906408884949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=2855331906408884949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/2855331906408884949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/2855331906408884949'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2008/08/windows-server-2003.html' title='Windows Server 2003'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-4135076840536328379</id><published>2008-07-25T10:20:00.000-07:00</published><updated>2010-03-14T15:11:48.767-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='exam'/><category scheme='http://www.blogger.com/atom/ns#' term='zend'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='certification'/><title type='text'>PHP 5 Certification</title><content type='html'>I recently decided to pursue a PHP 5 Certification. I purchased the &lt;a href="http://www.zend.com/en/store/php-certification/"&gt;Zend PHP 5 Certification Bundle&lt;/a&gt;, which includes the study guide (hardcopy and downloadable PDF), 10 online practice exams, and an exam voucher. I just finished reading over the 250 page study guide. It covers a variety of PHP concepts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PHP Basics &lt;/li&gt;&lt;li&gt;Functions &lt;/li&gt;&lt;li&gt;Arrays &lt;/li&gt;&lt;li&gt;Strings and Patterns (including regular expressions) &lt;/li&gt;&lt;li&gt;Web Programming &lt;/li&gt;&lt;li&gt;Object-oriented Programming &lt;/li&gt;&lt;li&gt;Object-oriented Design &lt;/li&gt;&lt;li&gt;Database Programming &lt;/li&gt;&lt;li&gt;XML and Web Services &lt;/li&gt;&lt;li&gt;Security &lt;/li&gt;&lt;li&gt;Streams and Network Programming &lt;/li&gt;&lt;li&gt;Differences Between PHP 4 and 5&lt;/li&gt;&lt;/ul&gt;After reading the guide, I took my first practice exam and scored Excellent overall. Scores are displayed as Fail, Pass, or Excellent. The website says that the practice exams are more difficult than the real exam. If you have a good working knowledge of PHP, the exam should not be too difficult. Here are a few key topics that you should be familiar with:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PHP Operators (instanceof, ===, @, etc)&lt;/li&gt;&lt;li&gt;Parsing XML documents and using SOAP services&lt;/li&gt;&lt;li&gt;Regular expressions&lt;/li&gt;&lt;li&gt;Commonly used string functions (&lt;a href="http://php.net/strings"&gt;php.net/strings&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Using prepared SQL statements&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Basic design patterns&lt;/li&gt;&lt;li&gt;Classes and object oriented programming&lt;/li&gt;&lt;li&gt;Array functions (&lt;a href="http://php.net/ref.array"&gt;php.net/ref.array&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Standard PHP Library (&lt;a href="http://php.net/book.spl"&gt;php.net/book.spl&lt;/a&gt;)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Know Array interfaces and Autoload&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;In addition to these, you should know how to write secure PHP code. You can download the Security chapter of the PHP 5 Study Guide for free on &lt;a href="http://www.zceguide.com/"&gt;http://www.zceguide.com&lt;/a&gt;. I recommend purchasing the study guide to help study for the exam. The exam expects that you use PHP often enough to recall basic functions, but it does not expect you to memorize the entire PHP manual. You should know some of the differences between PHP 4 and PHP 5. This includes different class access levels (public, private, protected and final), interfaces, and references. Overall, I feel that the certification is a good way to help determine whether or not an employee has the skills necessary to develop solid PHP applications. You can read more about it on the &lt;a href="http://www.zend.com/en/store/php-certification/"&gt;Zend certification website&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-4135076840536328379?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/4135076840536328379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=4135076840536328379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/4135076840536328379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/4135076840536328379'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2008/07/php-5-certification.html' title='PHP 5 Certification'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-4886426679424909456</id><published>2008-07-18T11:57:00.000-07:00</published><updated>2010-03-14T15:13:14.207-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kvm'/><category scheme='http://www.blogger.com/atom/ns#' term='synergy'/><title type='text'>Coding on two computers? Get Synergy</title><content type='html'>&lt;a href="http://synergy2.sourceforge.net/"&gt;Synergy&lt;/a&gt; is an open source program that enables you to use a single mouse and keyboard across multiple computers acting like a virtual KVM. This is very helpful if you have two (or more) computers next to each other. You can copy and paste between the different computers, which is very helpful for coding. One of my favorite features is that Synergy can be run on Windows, Mac, and linux operating systems. I have a computer running linux next to a Windows Server 2003 computer and Synergy makes software development much easier since I am able to use both computers as if they were one.&lt;br /&gt;&lt;br /&gt;I can quickly test web applications on multiple web browsers with multiple operating systems. If you use Network Attached Storage or simply configure a network share between the computers, it is similar to running a dual monitor setup. If you are using dual monitors, check out my blog post about &lt;a href="http://bryanpsimas.blogspot.com/2008/06/coding-on-dual-monitors.html"&gt;coding with dual monitors&lt;/a&gt;. You could even setup an audio server to integrate the computers more closely. Pretty much the only thing you cannot do is drag windows from one computer to another.&lt;br /&gt;&lt;br /&gt;Synergy labels your different computers as screens. You need to set Screen1 to be left of Screen2 and Screen2 to be right of Screen1. If you do not do both of these, your cursor could be stuck on one monitor. You can set it so that moving your cursor to the upper right corner does not cause it to switch to the other monitor. If you want to, you could even place a screen on top of another screen. Your keyboard types on whichever monitor that your cursor is currently on. You can configure shortcut keys to switch focus or lock your cursor onto a certain screen. (useful if you play video games) Check it out at &lt;a href="http://synergy2.sourceforge.net/"&gt;http://synergy2.sourceforge.net&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-4886426679424909456?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/4886426679424909456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=4886426679424909456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/4886426679424909456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/4886426679424909456'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2008/07/coding-on-two-computers-get-synergy.html' title='Coding on two computers? Get Synergy'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-7801076978628054800</id><published>2008-07-11T16:45:00.000-07:00</published><updated>2008-07-29T11:48:50.381-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='wamp'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>WampServer for Web Development</title><content type='html'>&lt;a href="http://www.en.wampserver.com/"&gt;WampServer 2&lt;/a&gt; is an open source package that includes Apache, PHP, and MySQL all in a simple, easy to setup installer for Microsoft Windows. It is ideal for web development on a Windows platform. The term &lt;a href="http://en.wikipedia.org/wiki/WAMP"&gt;WAMP &lt;/a&gt;is an acronym describing a common software configuration running &lt;span style="font-weight: bold;"&gt;W&lt;/span&gt;indows with &lt;span style="font-weight: bold;"&gt;A&lt;/span&gt;pache, &lt;span style="font-weight: bold;"&gt;P&lt;/span&gt;HP, and &lt;span style="font-weight: bold;"&gt;M&lt;/span&gt;ySQL. You can get your Apache server up and running with PHP and MySQL within minutes. This can take hours to download, install and configure these applications individually, especially if you do not have experience with them.&lt;br /&gt;&lt;br /&gt;WampServer installs a task tray icons that allows you to easily manage your server. You can enable and disable PHP extensions with the click of a button. It provides instant access to update your php.ini configuration file. When you are ready to restart the server, simply use the WampServer menu to restart it. For PHP developers, this saves a great deal of time.&lt;br /&gt;&lt;br /&gt;By default, your WampServer is only available from the computer that it is installed on, but you can place your WampServer on the Internet through the WampServer menu. However, I would not recommend using WampServer  in a production environment. You should have an IT manager that is responsible for managing your production server with Apache, PHP, and MySQL installations. When running a publicly accessible server, you need to ensure that you have the latest security updates on all software as well as a firewall. Even this does not make your server foolproof. You need to learn to &lt;a href="http://www.addedbytes.com/php/writing-secure-php/"&gt;write secure PHP code&lt;/a&gt;. I personally recommend running a &lt;a href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29"&gt;LAMP &lt;/a&gt;configuration for production use.  This involves running Linux with Apache, PHP, and MySQL.&lt;br /&gt;&lt;br /&gt;WampServer is perfect for developing applications on Windows platforms and greatly reduces the hassle of configuration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-7801076978628054800?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/7801076978628054800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=7801076978628054800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/7801076978628054800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/7801076978628054800'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2008/07/wampserver.html' title='WampServer for Web Development'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-4321080657390002062</id><published>2008-07-04T11:55:00.000-07:00</published><updated>2008-08-24T20:24:29.958-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='vps'/><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>Virtual Private Servers</title><content type='html'>I just tried out a virtual private server from &lt;a href="http://vpslink.com/?ref=C783BH"&gt;VPSLink&lt;/a&gt;. Their most basic plan gives users a server with 64 MBs ram, 2.5 GBs hard drive space and 100 GBs bandwidth per month for only $7.95 a month. This is a great deal compared to many other VPS hosting plans and there is no setup fee. A virtual private server gives you root access to your server and a unique IP address for hosting a wide array of services. This is perfect for developers or rather any linux users. It's extremely convenient to have a reliable server online that you can SSH to from anywhere. They have a nice shell applet that you can use to SSH from a web browser. There are no port restrictions so you can host anything including a web server, file server, game server or your own custom application. I was able to easily run Apache with PHP. You may wish to optimize it for your server by adjusting the number of threads in the apache.conf file.&lt;br /&gt;&lt;br /&gt;VPSLink gives you the option to choose from a variety of different operating systems. You can reboot your virtual server almost instantly or reinstall the operating system at no additional cost if you want to try out something new. This is a great alternative to purchasing a costly dedicated server. It is also nice because you can test out your applications before upgrading to a dedicated server. The downside is that you can't run too many applications at a single time due to the memory and processing constraints, but you can upgrade at the click of a button. It is not intended as a replacement solution for a dedicated server or a high traffic service. Before spending hundreds on the best plan, consider looking into dedicated servers. Overall, they offer a cost effective VPS solution. The biggest benefit is that you essentially have root access to your virtual machine so your options are limitless. You can view their website at &lt;a href="http://vpslink.com/?ref=C783BH"&gt;vpslink.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-4321080657390002062?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/4321080657390002062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=4321080657390002062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/4321080657390002062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/4321080657390002062'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2008/07/virtual-private-servers.html' title='Virtual Private Servers'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-8338399635197278556</id><published>2008-06-27T20:30:00.000-07:00</published><updated>2008-08-07T16:32:43.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='extension'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Web developer extensions for Mozilla Firefox</title><content type='html'>If you're a web developer, you develop your websites in Firefox or at least test them in Firefox. I'm going to discuss some Mozilla Firefox extensions that make life much easier as a developer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Web Developer&lt;/span&gt;&lt;br /&gt;This is an essential extension for any web developer. Here are some of the most beneficial features of the toolbar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Outline table cells and block level elements&lt;/li&gt;&lt;li&gt;Validate HTML and CSS&lt;/li&gt;&lt;li&gt;The Edit HTML and CSS feature let's you change HTML on a live web page. This can be very helpful when working on the design of a web page because you don't have to do the: Ctrl+S, Alt+Tab, F5 routine to see changes. I don't use WYSIWYG editors. They mess up HTML code.&lt;/li&gt;&lt;li&gt;In the Options menu, there is a setting to View Source in a new tab rather than a new windows. Very cool!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;This toolbar offers many other amazing features as well. Try them out for yourself.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. HTML Validator&lt;/span&gt;&lt;br /&gt;While the Web Developer toolbar does have HTML validation, this extension let's you validate HTML code without requiring that your site is online and accessible to the public. The Web Developer toolbar uses the W3 online validation tool. This validates HTML and shows errors on your View Source window in Firefox. Similarly, there is a CSS validator extension.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Tamper Data&lt;/span&gt;&lt;br /&gt;This Firefox extension let's you see what request headers are sent to the web server and which response headers are received from the web server. You can view any post data or cookies that the server sets. Additionally, the extension lets you modify headers. Great for discovering security holes in &lt;span style="font-style: italic;"&gt;your &lt;/span&gt;website.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Google Pagerank Status&lt;/span&gt;&lt;br /&gt;The Google Pagerank Status can be helpful to see where your website stands in the search rankings.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Firebug&lt;/span&gt;&lt;br /&gt;Firebug adds helpful web development tools to Firefox. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page. I leave it disabled much of the time, because there have been reports of memory leaks. Running too many Firefox extensions will do this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. All-in-One Gestures&lt;/span&gt;&lt;br /&gt;This mouse gesture extension may not necessarily be related to web development, but it is a great time saver. I rely on this extension to quickly perform common tasks such as navigating forward, backward, opening / closing tabs, refreshing, and viewing source. One of my favorite features is the Undo Close tab. Ever accidentally close a tab? Simply configure a mouse gesture to bring it back up. I configured mine to be a Z gesture since Undo is Ctrl+Z. You can undo multiple tabs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Greasemonkey&lt;/span&gt;&lt;br /&gt;Again, I don't necessarily use this extension for web development, but it is extremely helpful. Ever wish you could update a menu on a website or make it more user friendly? Do you have pages with long drop downs that you repeatedly have to scroll through in order to locate your option? With just a bit of JavaScript, you can update websites that you access often to save time.&lt;br /&gt;&lt;br /&gt;I recommend at least testing out all of these extensions. You can easily disable an extension if you don't wish to use it all the time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-8338399635197278556?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/8338399635197278556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=8338399635197278556' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/8338399635197278556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/8338399635197278556'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2008/06/web-developer-extensions-for-mozilla.html' title='Web developer extensions for Mozilla Firefox'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3661291340759401450.post-4708048011616793317</id><published>2008-06-20T13:19:00.000-07:00</published><updated>2008-07-29T11:52:38.648-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dual monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='ultramon'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Coding on dual monitors</title><content type='html'>More and more companies are starting to offer dual monitor setups to their software developers. They have been shown to &lt;a href="http://www.nytimes.com/2006/04/20/technology/20basics.html?ei=5090&amp;amp;en=6fc17b9bf54ea2ef&amp;amp;ex=1303185600&amp;amp;adxnnl=1&amp;amp;partner=rssuserland&amp;amp;emc=rss&amp;amp;adxnnlx=1145537733-/Kdyvqpu0/eVBVNBYUcsqg"&gt;increase productivity&lt;/a&gt; up to 30%. If you don't use dual monitors, I highly recommend trying it. It is great for anyone in software development, because you can easily write code on one monitor and quickly view the results on the other monitor or use it for debugging.&lt;br /&gt;&lt;br /&gt;If you use two (or more) monitors, you need to be using Ultramon. Dual monitor software development is just not the same without it. Ultramon places a task bar on both of your monitors. This is extremely helpful if you are like me and typically have many windows opened at once. Your taskbar isn't crowded with windows since they're divided between both monitors on the task bar. Here are a few of the key features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can also drag maximized windows between your monitors. This is one of my favorite features&lt;/li&gt;&lt;li&gt;Ultramon enables you to set a number of shortcut keys that are specifically for dual monitor usage&lt;/li&gt;&lt;li&gt;Ultramon has an SDK that lets you add custom features&lt;/li&gt;&lt;/ul&gt;Ultramon adds two buttons next to the minimize, maximize and close buttons in the upper right corner of your windows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The first lets you maximize windows across both monitors -- very cool&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The second gives you the option to place a window on the other monitor&lt;/li&gt;&lt;/ul&gt;I typically keep my email, website, API reference, or a text document open on one monitor and my development environment open on the other monitor. If you develop software on two monitors, I highly recommend giving Ultramon a chance to revolutionize your dual monitor experience. Is Ultramon worth the $39.95? It is a bit pricey for what it does, but you might be able to have your employer pay for it. You can check our more of the features and download the trial version of &lt;a href="http://www.realtimesoft.com/ultramon/overview/"&gt;Realtime Soft's Ultramon&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3661291340759401450-4708048011616793317?l=www.bryanpsimas.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.bryanpsimas.com/feeds/4708048011616793317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3661291340759401450&amp;postID=4708048011616793317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/4708048011616793317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3661291340759401450/posts/default/4708048011616793317'/><link rel='alternate' type='text/html' href='http://www.bryanpsimas.com/2008/06/coding-on-dual-monitors.html' title='Coding on dual monitors'/><author><name>Bryan Psimas</name><uri>http://www.blogger.com/profile/08905131632012304461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
