I realize I haven't blogged since I un-retired. So here's the story...
We sold RegionalHelpWanted.com in February 2008. After a year and a half off, I founded a new company with my previous partners to see if we could duplicate that success. (Anyone can get lucky once, but if we could do it again, maybe it it was more than luck?) We are using the same exact business model: working with local media partners using unsold inventory to advertise a local website on a revenue share basis. Instead of help wanted ads, or personal ads which is at the root of what Cupid.com was/is, this time around we are targeting coupon advertising. So in Nashville you'll hear ads for 10NashvilleCoupons.com on radio and see them on TV, and in Portland OR the website is 10PortlandCoupons.com, but it is all one website serving local content to you based on how you get there. Hopefully, you'll find your local pizza guy on there soon, or a discount on an oil change nearby.
Not only is the product different, but the software stack is a complete switch. RegionalHelpWanted.com we did in ColdFusion, Cupid.com in .net, both on IIS against SQL Server. All on Windows. 10LocalCoupons.com is done in django, an awesome framework for Python, on Apache behind nginx against postgreSQL, all on Ubuntu. I'm really enjoying the new way things are done. Much of the tediousness of writing control panel type stuff -- record insert, updates, deletes -- for customer service and accounting needs is a gimme with django's admin package, allowing my development team to hit the ground running. The django community has been a great resource to us.
So the software landscape is very different, but the hardware difference between old and new is even more dramatic. In our previous endeavors, we were paying about $1500 a month per web server for managed services. Now, using open source software on Amazon's EC2, we pay less than one tenth of that. It's a running joke every month when I announce our EC2 cost. My guess is about half of that comes from dropping Microsoft licensing fees, the rest is from virtualization efficiencies and dropping the human support.
Not all things are different however. This new project has given us the opportunity to hire back several of the awesome people we've worked with in the past. That has made it easy for me to go back to work.
I'll be blogging more soon about what we are up to, and pointing out things I've learned along the way, but for now know that I am having tons of fun.
Sunday, February 13, 2011
10LocalCoupons.com
Posted by
Steve Bywater
at
12:48 PM
0
comments
Links to this post
Labels: 10LocalCoupons.com, Cupid.com, django, open source, PostgreSQL, rave, SQL, Ubuntu, web site development
Wednesday, April 14, 2010
Bulk COPY a CSV into PostgreSQL, skipping first row
Looked for a solution to this yesterday and couldn't find it. Asked my Linux guru Jeremy today and he had a easy solution, so this might be helpful to others.
The scenario is you have a big CSV file, and you want to bulk copy it into PostgreSQL, but the first row of the file isn't data, it's got the column names in it. In my case, the text file is 65 Megs so it's not like you can just edit it in a text editor to delete the offending line. (The data happens to be the combined US and Canada zip/postal code database from ZipInfo.com, fyi.)
SQL Server has a bulk insert GUI that lets you specify a start row. Needed that functionality here.
Solution:
Use wc to find out how many rows are in your file:$ wc ZCUG.TXT
872135 1871133 69105493 ZCUG.TXT
That first number returned, in my case 872135, is the number of rows in the file. Subtract one and and tail that number, outputting to a new file:
tail -872134 ZCUG.TXT > ZCUG-trimmed.txt
Boom! A new file without the row of column names.
Posted by
Steve Bywater
at
1:56 PM
0
comments
Links to this post
Labels: open source, PostgreSQL, SQL, web site development
Tuesday, March 30, 2010
owasp-esapi-python configuration
I tried to send this issue to the esapi-python mailing list (after subscribing) but it doesn't look like that is a functioning list. So any help with the following would be greatly appreciated.
Hi!
Thanks for your work on owasp-esapi-python! I am trying to integrate it into a project and will certainly spread the word to help drum up support for this as I make headway.
I've run into an issue during configuration:
When I do this at the python 2.6 interactive shell, it returns a single line of output...
>>> from esapi.core import ESAPI
>>> ESAPI.encryptor().gen_keys()
Creating new keys in /esapi/keyring/
The documentation leads me to believe that it will also output an Encryptor_MasterSalt but, if it's supposed to do that here, it isn't for me. Let me know any info I can provide. This is on Ubuntu 9.10.
Thanks in advance,
- Steve
Posted by
Steve Bywater
at
1:23 PM
0
comments
Links to this post
Labels: open source, security, Ubuntu, web site development
Sunday, November 29, 2009
Is http://downforeveryoneorjustme.com Down?!? lol
Ok so I don't think it's down, because the homepage does serve. But when I'm trying to use it I'm getting an error dump:
Traceback (most recent call last):
File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 507, in __call__
handler.get(*groups)
File "/base/data/home/apps/downforeveryoneorjustme/1.337010419190071564/main.py", line 137, in get
self.render_down(u)
File "/base/data/home/apps/downforeveryoneorjustme/1.337010419190071564/main.py", line 103, in render_down
db.put(downer)
File "/base/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 1212, in put
keys = datastore.Put(entities)
File "/base/python_lib/versions/1/google/appengine/api/datastore.py", line 179, in Put
apiproxy_stub_map.MakeSyncCall('datastore_v3', 'Put', req, resp)
File "/base/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 72, in MakeSyncCall
apiproxy.MakeSyncCall(service, call, request, response)
File "/base/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 266, in MakeSyncCall
rpc.CheckSuccess()
File "/base/python_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 111, in CheckSuccess
raise self.exception
OverQuotaError: The API call datastore_v3.Put() required more quota than is available.
I love the irony. It's working for sites that are up, like google.com. But I'm working on my sister's web site dev.huppahs.com which is being hosted by my friend, and his site is down at the moment.
Wednesday, October 21, 2009
Quicken install error 1721 resolution
After several days of exchanging emails with Quicken support regarding my installation issues, they mailed me an install CD. When that produced the same result, I did use their Online Chat. The website is lousy: when you go to support, and select the product Rental Property Manager, it doesn't offer chat support. But if you choose the product Quicken for Windows, and the version Rental Property Manager, chat is available. It took 20 minutes waiting in the chat queue, but then I had the complete attention of the support person who was able to slove this issue for me. I'll post the transcript here, in case it helps others (Google lonk bait):
Loading...
Raj: Welcome to Quicken chat support. My name is Raj. Please give me a moment while I review the info you provided.
Raj: hI Stephen
Stephen Bywater: hello
Raj: How are you doing today?
Stephen Bywater: fine t
Stephen Bywater: ty
Raj: Good to know that.
Raj: If I understand you correctly, you are unable to install Quicken 2010 RPM, is that so?
Stephen Bywater: correct
Stephen Bywater: These things I have already tried, as suggested by email tech support:
Stephen Bywater: creating a new admin acct, deleting previous version manually
Stephen Bywater: running install as admin
Stephen Bywater: using the qcleanui util
Stephen Bywater: none of these solved the install issue. it quits reporting error 1721
Stephen Bywater: would you like the relevant part of the install log?
Raj: No Stephen, thank you for elaborating on the issue.
Raj: Are you installing Quicken using CD or Download?
Stephen Bywater: i tried the download. Then as a troubleshooting idea, support mailed me the CD. same error either way
Raj: Do you have the CD with you?
Stephen Bywater: yes
Raj: Lets try once more to clean Quicken once again and install using the CD by following some different steps. Do you have QCleanUI application with you?
Stephen Bywater: yes
Raj: Please run it once more and let me know if you are using HP Computer or Dell.
Stephen Bywater: Dell
Stephen Bywater: qcleanui
Stephen Bywater: sorry wrong window
Stephen Bywater: uninstallation completed successfully
Raj: Now, we need to follow some steps to delete the shared folders.
Raj: 1. Please click on Start button >> Computer.
2. On the Organize menu, select Folder and Search Options.
3. On the View tab, choose Show hidden files and folders.
4. Clear the Hide extensions for known file types check box.
5. Select OK.
Stephen Bywater: done
Raj: In the mean time, are you using 64 bit Vista or 32 bit?
Stephen Bywater: 64
Raj: Okay.
Stephen Bywater: i'm ready
Raj: 1. In the C:\Program Data\Intuit folder >>>> right-click the Quicken folder >>>>select Delete, and then confirm.
Stephen Bywater: done
Raj: 2. In the C:\Users\[your username folder]\Application Data\Roaming\Intuit\Quicken folder, select the Data folder, and then copy it to a safe location on your hard drive.
Note: You might not have a Data folder unless Quicken 2007 or Quicken 2008 is your first version of Quicken.
Stephen Bywater: Access is Denied
Raj: Are you login in as administrator ?
Stephen Bywater: to /{user}/Application Data
Stephen Bywater: yes, my acct is in admin
Raj: Please close all windows except this chat window and try to delete that Quicken folder once again.
Stephen Bywater: ok I was able to copy \AppData\Roaming\Intuit\Quicken\Data to new location
Raj: 3. In the C:\Users\[user]\Application Data\Roaming\Intuit folder, right-click the Quicken folder, select Delete, and then confirm.
Stephen Bywater: note I am deleting C:\Users\[user]\AppData\Roaming\Intuit\Quicken...
Raj: Yes.
Stephen Bywater: Application Data is not accessible, but AppData is. ok deleted
Raj: 4. Repeat steps 4 and 5 for each Windows user.
5. In the C:\Program Files folder, right-click the Quicken installation folder, select Delete, and then confirm.
6. Empty the Recycle Bin.
Stephen Bywater: done
Raj: http://code.msdn.microsoft.com/KB961894/Release/ProjectReleases.aspx?ReleaseId=2067
Raj: Please open this link and run ENU (vcredist_x64.exe)
Stephen Bywater: installed it
Raj: Now, please insert the CD and don't auto run it. just browse the CD.
Stephen Bywater: ok
Raj: Do you see 'Disk 1' and 'Custom' folder there?
Stephen Bywater: yes
Raj: Please copy both folders and paste them to the desktop.
Stephen Bywater: cone copying
Stephen Bywater: done copying
Raj: Now, please open that Disk1 folder and double click on the Quicken 2010. MSI to start installation.
Stephen Bywater: ok... just accept all defaults as normal?
Raj: Please add 2010 just after Quicken and the location will be C:\ Program Files\Quicken2010 then continue the installation.
Stephen Bywater: installing to custom location now
Stephen Bywater: woot! installation is asking to check for updates! never got this far yet
Raj: Good news
Stephen Bywater: does install window disappear checking for updates?
Stephen Bywater: or is it all done?
Raj: Did you get any pop-up, like, done, or Use Quicken, like this?
Stephen Bywater: it gave the option to check for updates at the end of install, i clicked that, and window is gone now
Raj: Please wait for 2-3 minutes.
Stephen Bywater: ok brb
Raj: Okay.
Stephen Bywater: bak
Stephen Bywater: no indication that it is still updating
Raj: Okay
Raj: Do you see a Quicken icon on the desktop?
Stephen Bywater: no
Stephen Bywater: there is a Quicken 2010 folder in start menu, but it's empty
Raj: Please go to Start---->>all programs and check if there is any Quicken 2010 folder there,
Raj: Do you see any Quicken folder there?
Stephen Bywater: a Quicken 2010 folder, empty
Raj: Please go to C:\Program files\Quicken2010
Stephen Bywater: its in (x86), ok
Raj: Okay.
Raj: Do you see other files related to Quicken? or it is empty?
Stephen Bywater: Quicken 2010 dir has many files
Raj: Please keep that Quicken 2010 folder open and be on the desktop and open Disk 1 folder.
Stephen Bywater: ready
Raj: Sorry, please close that Disk1 folder and Open the Custom folder, open the AU_AD_Q folder, and then open the SKU folder.
Stephen Bywater: np got it
Raj: Open the folder for your version of Quicken. For example, if you are using Home and Business, open the HaB folder.
Open the Custom folder.
Stephen Bywater: RPM for me
Raj: Yes.
Stephen Bywater: ok there
Raj: Right click the splash.png or splash file and select Copy.
Stephen Bywater: copied
Raj: Now, go to that C:\Program files (x86)\Quicken2010 folder. Right click there and paste. Paste that splash file there.
Stephen Bywater: pasted
Raj: Now, double click on qw.exe file there and check if it opens Quicken.
Stephen Bywater: it says "There is a problem with your Quicken installation... Please uninstall Quicken, and install again."
Raj: Okay.
Raj: Please click on Start-->Control Panel-->Programs and features (Uninstall program)-->Locate Quicken and remove it.
Stephen Bywater: uninstalled
Raj: Now, try to install Quicken once again using autorun from the CD.
Stephen Bywater: installing...
Raj: Keep every setting default.
Stephen Bywater: it dropped icons on desktop this time
Stephen Bywater: install wizard is downloading latest Quicken updates...
Raj: It seems to be working this time, right?
Stephen Bywater: yes, progress
Raj: Lovely !
Stephen Bywater: indeed
Raj: Yes.
Stephen Bywater: Updating Quicken...
Stephen Bywater: Installation Complete! Launching
Raj: Okay.
Stephen Bywater: yeah. its giving me option to convert data to 2101
Stephen Bywater: 2010
Raj: Wonderful !!!!
Raj: You did it.
Stephen Bywater: yeah! Thanks so much for your help! :D
Raj: My pleasure...
Raj: Were we able to resolve the issue(s) that brought you to chat today?
Stephen Bywater: yes, definitely
Raj: It's always a pleasure to help our customers and I am glad I was able to resolve the issue for you.
.jpg)