From sean_marcia at yahoo.com Mon Mar 7 07:04:54 2011 From: sean_marcia at yahoo.com (sean marcia) Date: Sun, 6 Mar 2011 22:04:54 -0800 (PST) Subject: [portland] Tkinter Question In-Reply-To: References: Message-ID: <377141.70940.qm@web120510.mail.ne1.yahoo.com> Hey Pythonistas, I have a couple questions that I am hoping for some help/advice on. I am in the process of coding up a small voting app for a professor of mine. The app, when completed, will send the students some info which they will vote on. So for example, the student will see something like "You are a member of the Triangle party. You received advertising from the Circle party. Who do you wish to vote for? Circle, Triangle, Abstain." The admin app which the professor will use will set the number of iterations for the voting game, the chance of getting advertising, etc. So my first question has to do with tkinter which I am using to build the gui. Is it possible to adjust the size of input boxes in tkinter? Second, I am planning on using xmlrpc for communication. Is this best/easiest? I haven't done a lot of gui or networking using python so any advice on the easiest and fastest way would be appreciated especially since I am doing this for free :) Thanks in advance! Happiness, Sean -------------- next part -------------- An HTML attachment was scrubbed... URL: From joe at burks-family.us Mon Mar 7 09:12:45 2011 From: joe at burks-family.us (Joseph Burks) Date: Mon, 7 Mar 2011 00:12:45 -0800 Subject: [portland] Tkinter Question In-Reply-To: <377141.70940.qm@web120510.mail.ne1.yahoo.com> References: <377141.70940.qm@web120510.mail.ne1.yahoo.com> Message-ID: It's hard to answer your first question (I don't think I can answer the second well) without a little more information. Are you only setting input widget size when you create the interface or are you changing while it is displayed? Which input widget are you talking about and what size are you trying to adjust (are you trying to create a 100x100 pixel checkbutton or a 40x5 character multi-line text widget)? In the simplest case you would use the "place" geometry manager and tell it exactly where to put the widget and how large to make it. There are many drawbacks to using the place manager (for instance you lose automatic resizing when the parent window resizes) but if this is something that is only going to be used once, it's probably okay. -Joe On Sun, Mar 6, 2011 at 10:04 PM, sean marcia wrote: > Hey Pythonistas, > > I have a couple questions that I am hoping for some help/advice on. > > I am in the process of coding up a small voting app for a professor of > mine. The > app, when completed, will send the students some info which they will vote > on. > So for example, the student will see something like "You are a member of > the > Triangle party. You received advertising from the Circle party. Who do you > wish > to vote for? Circle, Triangle, Abstain." The admin app which the professor > will > use will set the number of iterations for the voting game, the chance of > getting > advertising, etc. > > So my first question has to do with tkinter which I am using to build the > gui. > Is it possible to adjust the size of input boxes in tkinter? > > Second, I am planning on using xmlrpc for communication. Is this > best/easiest? > > I haven't done a lot of gui or networking using python so any advice on the > easiest and fastest way would be appreciated especially since I am doing > this > for free :) > > Thanks in advance! > > Happiness, > Sean > > > > > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://mail.python.org/pipermail/portland/attachments/20110306/73daf5cd/attachment.html > > > _______________________________________________ > Portland mailing list > Portland at python.org > http://mail.python.org/mailman/listinfo/portland > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mccredie at gmail.com Mon Mar 7 19:23:05 2011 From: mccredie at gmail.com (Matt McCredie) Date: Mon, 7 Mar 2011 10:23:05 -0800 Subject: [portland] Tkinter Question In-Reply-To: <377141.70940.qm@web120510.mail.ne1.yahoo.com> References: <377141.70940.qm@web120510.mail.ne1.yahoo.com> Message-ID: > So my first question has to do with tkinter which I am using to build the gui. > Is it possible to adjust the size of input boxes in tkinter? I'm assuming you mean the "Entry" widget. And yes, it can be resized just like any other widget. I have used this site as a resource for Tkinter in the past. It isn't great, but last I checked there wasn't much. http://www.pythonware.com/library/ Here is some code that creates an Entry widget that resizes with the parent: import Tkinter as tk root = tk.Tk() e = tk.Entry(root) e.pack(fill='x', expand=True) root.mainloop() > Second, I am planning on using xmlrpc for communication. Is this best/easiest? That depends on what you are familiar with and what type of data you are communicating. If you are creating an xmlrpc server inside of your gui app you will have to do some work to make sure that both event loops get run (server and gui). I've done it before, but it isn't trivial. My guess is that most of the people in the python mailing list would find that creating a simple web-app would be easier. But again, that depends on what you are familiar with. And I don't know all of the requirements for your project. Matt On Sun, Mar 6, 2011 at 10:04 PM, sean marcia wrote: > Hey Pythonistas, > > I have a couple questions that I am hoping for some help/advice on. > > I am in the process of coding up a small voting app for a professor of mine. The > app, when completed, will send the students some info which they will vote on. > So for example, the student will see something like "You are a member of the > Triangle party. You received advertising from the Circle party. Who do you wish > to vote for? Circle, Triangle, Abstain." The admin app which the professor will > use will set the number of iterations for the voting game, the chance of getting > advertising, etc. > > So my first question has to do with tkinter which I am using to build the gui. > Is it possible to adjust the size of input boxes in tkinter? > > Second, I am planning on using xmlrpc for communication. Is this best/easiest? > > I haven't done a lot of gui or networking using python so any advice on the > easiest and fastest way would be appreciated especially since I am doing this > for free :) > > Thanks in advance! > > Happiness, > Sean > > > > > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > _______________________________________________ > Portland mailing list > Portland at python.org > http://mail.python.org/mailman/listinfo/portland > From ethan at stoneleaf.us Tue Mar 8 16:31:27 2011 From: ethan at stoneleaf.us (Ethan Furman) Date: Tue, 08 Mar 2011 07:31:27 -0800 Subject: [portland] Tkinter Question In-Reply-To: <377141.70940.qm@web120510.mail.ne1.yahoo.com> References: <377141.70940.qm@web120510.mail.ne1.yahoo.com> Message-ID: <4D764BCF.3000509@stoneleaf.us> sean marcia wrote: > Hey Pythonistas, > > I have a couple questions that I am hoping for some help/advice on. > > I am in the process of coding up a small voting app for a professor of mine. The > app, when completed, will send the students some info which they will vote on. > So for example, the student will see something like "You are a member of the > Triangle party. You received advertising from the Circle party. Who do you wish > to vote for? Circle, Triangle, Abstain." The admin app which the professor will > use will set the number of iterations for the voting game, the chance of getting > advertising, etc. > > So my first question has to do with tkinter which I am using to build the gui. > Is it possible to adjust the size of input boxes in tkinter? Yes. Are you looking to resize as the entire app resizes, or to resize as the content grows/shrinks? Are these input boxes editable by the student, or is the content solely from the professor? ~Ethan~ From sean_marcia at yahoo.com Tue Mar 8 17:00:47 2011 From: sean_marcia at yahoo.com (sean marcia) Date: Tue, 8 Mar 2011 08:00:47 -0800 (PST) Subject: [portland] Tkinter Question In-Reply-To: <4D764BCF.3000509@stoneleaf.us> References: <377141.70940.qm@web120510.mail.ne1.yahoo.com> <4D764BCF.3000509@stoneleaf.us> Message-ID: <841331.32828.qm@web120519.mail.ne1.yahoo.com> Hey all, Yes I was just looking to resize the field that the prof sees purely for aesthetic reason. I was trying to make the gui look nicer. Matt's pythonware link put me in the right direction. Thanks for all the responses! Cheers, Sean ________________________________ From: Ethan Furman To: "Python Users Group -- Portland, Oregon USA" Sent: Tue, March 8, 2011 3:31:27 PM Subject: Re: [portland] Tkinter Question sean marcia wrote: > Hey Pythonistas, > > I have a couple questions that I am hoping for some help/advice on. > > I am in the process of coding up a small voting app for a professor of mine. >The app, when completed, will send the students some info which they will vote >on. So for example, the student will see something like "You are a member of the >Triangle party. You received advertising from the Circle party. Who do you wish >to vote for? Circle, Triangle, Abstain." The admin app which the professor will >use will set the number of iterations for the voting game, the chance of getting >advertising, etc. > > So my first question has to do with tkinter which I am using to build the gui. >Is it possible to adjust the size of input boxes in tkinter? Yes. Are you looking to resize as the entire app resizes, or to resize as the content grows/shrinks? Are these input boxes editable by the student, or is the content solely from the professor? ~Ethan~ _______________________________________________ Portland mailing list Portland at python.org http://mail.python.org/mailman/listinfo/portland -------------- next part -------------- An HTML attachment was scrubbed... URL: From michelle at pdxpython.org Wed Mar 9 00:05:17 2011 From: michelle at pdxpython.org (Michelle Rowley) Date: Tue, 8 Mar 2011 15:05:17 -0800 Subject: [portland] TONIGHT: 6:30pm @ Urban Airship - feedparser, PEP drama, and lightning talks! Message-ID: Happy Second Tuesday, Pythonistas! It's that time again. On deck for tonight is a lightning-talk-stravaganza. Lindsey Smith will kick off the meeting with Michel's Module of the Month: feedparser. Next up, Michael Schurter will talk in a lightning-esque manner about PEPs 380 & 3152. Several other speakers penciled into the schedule after Michael include: Adam Lowry, Eric Holscher, Dan Colish, and YOU! Come on, it'll be fun. :) See you there, Michelle Urban Airship is at 334 NW 11th Ave, in the Pearl District: http://goo.gl/maps/U6mC The main door will probably be locked, but the back door, which leads directly to the event space, will be propped open. The back door is right around the corner on NW Flanders, next to the loading dock: http://goo.gl/maps/Ikbh -------------- next part -------------- An HTML attachment was scrubbed... URL: From rshepard at appl-ecosys.com Tue Mar 22 18:37:08 2011 From: rshepard at appl-ecosys.com (Rich Shepard) Date: Tue, 22 Mar 2011 10:37:08 -0700 (PDT) Subject: [portland] Reformatting Data Files In-Reply-To: References: <4D4329FA.1080202@stoneleaf.us> Message-ID: On Fri, 28 Jan 2011, Kyle Jones wrote: > It isn't anything pretty, but I think this might be similar: > http://paste.pocoo.org/show/328545/ Kyle, This has worked flawlessly for some of the exported spreadsheet pages. Now, however, I have some pages that include the units for the measured parameters (e.g., mg/L) which is the third-to-last column in the postgres table. Since I've not used python for more than a year (and I _must_ quickly become fluent once again), my inability to get a working change embarrasses me and I must ask the group for help. The original lines are: # Write the location, the date for this column, the parameter name # (which is the first column in this row), and the value. if row[i] != '': float(row[i]) outdata.writerow([location, sampdate[i], row[0], float(row[i])]) else: row[i] = '' outdata.writerow([location, sampdate[i], row[0]]) When the last column (item in the row list) is the unit the value is a string, not numeric so the float() function fails. My feeble attempts to exclude that last item from conversion have failed miserably, including: # Write the location, the date for this column, the parameter name # (which is the first column in this row), and the value. if row[i] != '': # if last column is the units name, don't convert. for i in range(row[] - 1) float(row[i]) outdata.writerow([location, sampdate[i], row[0], float(row[i])]) else: row[i] = '' outdata.writerow([location, sampdate[i], row[0]]) I've tried splitting (using row[:-1]) and other expressions, but none are correct. Please turn me in the right direction. TIA, Rich From ethan at stoneleaf.us Tue Mar 22 21:37:49 2011 From: ethan at stoneleaf.us (Ethan Furman) Date: Tue, 22 Mar 2011 13:37:49 -0700 Subject: [portland] Reformatting Data Files In-Reply-To: References: <4D4329FA.1080202@stoneleaf.us> Message-ID: <4D89089D.4080904@stoneleaf.us> Rich Shepard wrote: > This has worked flawlessly for some of the exported spreadsheet pages. > Now, however, I have some pages that include the units for the measured > parameters (e.g., mg/L) which is the third-to-last column in the postgres > table. > [snip] > outdata.writerow([location, sampdate[i], row[0], float(row[i])]) How about a function that either floats your string, or returns the string if it's not a number? Something like this: --> def flt_or_str(unk): ... try: ... return float(unk) ... except ValueError: ... return unk ... --> float("1") 1.0 --> float("hello") Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for float(): hello --> flt_or_str("1") 1.0 --> flt_or_str("829mg/L") '829mg/L' Then your line of codes becomes: outdata.writerow([location, sampdate[i], row[0], flt_or_str(row[i])]) Hope this helps! ~Ethan~ From rshepard at appl-ecosys.com Tue Mar 22 22:19:55 2011 From: rshepard at appl-ecosys.com (Rich Shepard) Date: Tue, 22 Mar 2011 14:19:55 -0700 (PDT) Subject: [portland] Reformatting Data Files In-Reply-To: <4D89089D.4080904@stoneleaf.us> References: <4D4329FA.1080202@stoneleaf.us> <4D89089D.4080904@stoneleaf.us> Message-ID: On Tue, 22 Mar 2011, Ethan Furman wrote: > How about a function that either floats your string, or returns the string if > it's not a number? Ethan, Thank you. I'm moving among emacs, SQL, R, and python and think my brain short-circuited along the way. Didn't think of this. > Something like this: > > --> def flt_or_str(unk): > ... try: > ... return float(unk) > ... except ValueError: > ... return unk > ... > --> float("1") > 1.0 > --> float("hello") > Traceback (most recent call last): > File "", line 1, in > ValueError: invalid literal for float(): hello > --> flt_or_str("1") > 1.0 > --> flt_or_str("829mg/L") > '829mg/L' > > > Then your line of codes becomes: > > outdata.writerow([location, sampdate[i], row[0], flt_or_str(row[i])]) > > Hope this helps! Certainly does. Much appreciated, Rich From ethan at stoneleaf.us Tue Mar 22 22:38:51 2011 From: ethan at stoneleaf.us (Ethan Furman) Date: Tue, 22 Mar 2011 14:38:51 -0700 Subject: [portland] Reformatting Data Files In-Reply-To: References: <4D4329FA.1080202@stoneleaf.us> <4D89089D.4080904@stoneleaf.us> Message-ID: <4D8916EB.1080609@stoneleaf.us> Rich Shepard wrote: > On Tue, 22 Mar 2011, Ethan Furman wrote: > >> How about a function that either floats your string, or returns the >> string if it's not a number? > > Thank you. I'm moving among emacs, SQL, R, and python and think my brain > short-circuited along the way. Didn't think of this. Heh -- no worries. Same situation happened to me a couple months ago. Got so caught up in the complexities that I missed the simple solution. >> >> Hope this helps! > > Certainly does. > > Much appreciated, Awesome. Good luck! ~Ethan~ From rshepard at appl-ecosys.com Wed Mar 23 01:57:12 2011 From: rshepard at appl-ecosys.com (Rich Shepard) Date: Tue, 22 Mar 2011 17:57:12 -0700 (PDT) Subject: [portland] New data, old script: new problem Message-ID: Me again. Python is telling me that there are 13 items in the row count in addition to row[0] where there should be only 12. I don't see the error and there is no blank space at the end of the row. I've attached the script (datacon.py) that worked before, and here's a very short data set that throws the error: Traceback (most recent call last): File "./datacon.py", line 32, in if row[i] != '': IndexError: list index out of range Data: ::JC-2:JC-3:JC-3:MC-1:MC-2:BC-2:BC-3:ITSN:SC:SC-100:GDSP-10:GD-1 ::2008-06-26:2008-05-29:2008-06-26:2008-06-26:2008-06-26:2008-06-26:2008-05-29:2008-06-23:2008-06-26:2008-06-23:2008-06-23:2008-06-26 pH:8.00:8.00:7.50:8.00:7.90:8.00:7.90:8.40:7.50:8.00:8.00:8.10 I've printed stubs and found that the list index is looking for one too many items, but I don't see where it's getting the incorrect count. Please point out what's incompatible with the script or data file. TIA, Rich -------------- next part -------------- #!/usr/bin/env python import sys,csv filename = sys.argv[1] try: infile = open(filename, 'r') except: print "Can't open ", filename,"!" sys.exit(1) indata = csv.reader(infile, delimiter=':') loc = indata.next() sampdate = indata.next() # check for mis-match in number of columns assert len(loc) == len(sampdate) outfile = open('out.csv', 'w') outdata = csv.writer(outfile, delimiter = ':', lineterminator = '\n') # The next rows are our parameters. for row in indata: # iterate through each column for the particular locations for i, location in enumerate(loc): # ignore the first column, which contains the parameter name if i == 0: continue # Write the location, the date for this column, the parameter name # (which is the first column in this row), and the value. if row[i] != '': float(row[i]) outdata.writerow([location, sampdate[i], row[0], float(row[i])]) else: row[i] = '' outdata.writerow([location, sampdate[i], row[0]]) infile.close() outfile.close() From monk at netjunky.com Wed Mar 23 02:51:26 2011 From: monk at netjunky.com (jonathan karon) Date: Tue, 22 Mar 2011 18:51:26 -0700 Subject: [portland] New data, old script: new problem In-Reply-To: References: Message-ID: Rich, On Tue, Mar 22, 2011 at 5:57 PM, Rich Shepard wrote: > Me again. Python is telling me that there are 13 items in the row count in > addition to row[0] where there should be only 12. I don't see the error and > there is no blank space at the end of the row. >::JC-2:JC-3:JC-3:MC-1:MC-2:BC-2:BC-3:ITSN:SC:SC-100:GDSP-10:GD-1 >::2008-06-26:2008-05-29:2008-06-26:2008-06-26:2008-06-26:2008-06-26:2008-05-29:2008-06-23:2008-06-26:2008-06-23:2008-06-23:2008-06-26 >pH:8.00:8.00:7.50:8.00:7.90:8.00:7.90:8.40:7.50:8.00:8.00:8.10 It looks to me like your data headers (location and date) have two blanks at the beginning of the rows (two leading colons), while the sampled data has only one blank (one leading colon). That will cause loc and sampdate to have 14 elements each while row will only have 13. You could adjust your subscripting to use row[i-1] and that would solve your quandary. Also, it looks like loc[1] and sampdate[1] are blank. Are you intentionally including them in your output? You may want to skip processing if i < 2, otherwise your first data column will also be blank. ~jonathan > > ?I've attached the script (datacon.py) that worked before, and here's a > very short data set that throws the error: > > Traceback (most recent call last): > ?File "./datacon.py", line 32, in > ? ?if row[i] != '': > IndexError: list index out of range > > > ?I've printed stubs and found that the list index is looking for one too > many items, but I don't see where it's getting the incorrect count. Please > point out what's incompatible with the script or data file. > > TIA, > > Rich > > > -------------- next part -------------- > #!/usr/bin/env python > > import sys,csv > > filename = sys.argv[1] > try: > ?infile = open(filename, 'r') > except: > ?print "Can't open ", filename,"!" > ?sys.exit(1) > indata = csv.reader(infile, delimiter=':') > > loc = indata.next() > sampdate = indata.next() > > # check for mis-match in number of columns > assert len(loc) == len(sampdate) > > outfile = open('out.csv', 'w') > outdata = csv.writer(outfile, delimiter = ':', lineterminator = '\n') > > # The next rows are our parameters. > for row in indata: > ?# iterate through each column for the particular locations > ?for i, location in enumerate(loc): > ? # ignore the first column, which contains the parameter name > ? if i == 0: > ? ? continue > ? ? ?# Write the location, the date for this column, the parameter name > ? # (which is the first column in this row), and the value. > ? if row[i] != '': > ? ? float(row[i]) > ? ? outdata.writerow([location, sampdate[i], row[0], float(row[i])]) > ? else: > ? ? row[i] = '' > ? ? outdata.writerow([location, sampdate[i], row[0]]) > > infile.close() > outfile.close() > _______________________________________________ > Portland mailing list > Portland at python.org > http://mail.python.org/mailman/listinfo/portland > From rshepard at appl-ecosys.com Wed Mar 23 14:15:46 2011 From: rshepard at appl-ecosys.com (Rich Shepard) Date: Wed, 23 Mar 2011 06:15:46 -0700 (PDT) Subject: [portland] New data, old script: new problem In-Reply-To: References: Message-ID: On Tue, 22 Mar 2011, jonathan karon wrote: > It looks to me like your data headers (location and date) have two blanks > at the beginning of the rows (two leading colons), while the sampled data > has only one blank (one leading colon). Jonathon, Yes, they do. I can remove those extra blanks; at least, one of them. All rows should have the same number of columns, but the location and sampling date start one column over because the first column below has the parameter name. I completely missed that, but should have seen there was one too many columns there. > Also, it looks like loc[1] and sampdate[1] are blank. Are you > intentionally including them in your output? You may want to skip > processing if i < 2, otherwise your first data column will also be blank. The blanks should not be in the output. My problems are caused by each tab in the same spreadsheet (as well as each spreadsheet) is structured differently. That's what makes extracting these data and reformatting them to match the database table so time consuming. Thanks very much for pointing me to the top two lines and not the following ones. Rich From igal at pragmaticraft.com Sat Mar 26 00:56:01 2011 From: igal at pragmaticraft.com (Igal Koshevoy) Date: Fri, 25 Mar 2011 16:56:01 -0700 Subject: [portland] OT: PDX11 Hackathon and Unconference, April 1-2 at PSU Message-ID: Dear Pythoneers, Come work on open source applications with other developers. There's one Python project signed up and I'd be excited to see more. You can also pair program on various Ruby projects, like Calagator, which will be fun and easy for Python programmers to do: "PDX11 is a community of software industry professionals, local government leaders and interested citizens dedicated to supporting the city's initiative to promote and enhance the software industry in Portland, OR. Join us April 1-2 for the PDX11 Civic Unconference and Unconference. This community meeting is open to all parties interested in putting the spotlight on the vibrant tech scene and making Portland the go-to place for talent and investment opportunities. Join the revolution and help turn it up to 11!" * When: Friday, April 1, 2011 from 5?10pm and Saturday, April 2, 2011 from 8am?6:30pm * Where: Portland State University Engineering Building, 1930 SW 4th Ave, Portland Oregon 97201 * Details: http://pdx11.org/node/2919 * RSVP: http://pdx11unconference.eventbrite.com/ * Add to your calendar: http://calagator.org/events/1250459866 && http://calagator.org/events/1250459889 * Apps being hacked on: http://etherpad.opensourcebridge.org/pdx11hackathon-april2 -igal -------------- next part -------------- An HTML attachment was scrubbed... URL: From joshua.r.english at gmail.com Mon Mar 28 19:33:06 2011 From: joshua.r.english at gmail.com (Josh English) Date: Mon, 28 Mar 2011 10:33:06 -0700 Subject: [portland] Rate question Message-ID: At my last job I created a time clock program to make my life easier. I gave it to a different department, too. Then, last July, I was canned. Programming was not part of my job description at the time. Now a third department wants to use my program and they want a few extra features added to it. I've been asked to come back as a contract employee to get it set up. I suspect this will take me a day or two, probably over the weekend. I can't imagine this will take more than four hours. What is an acceptable rate to charge these people? Here's some more context: My wife works for this third department. I sometimes work as a math tutor (high-school algebra to college calculus) at $20/hr. My degree is in education. Any suggestions? I'm not going to say no, I just want to know what's market-rate fair. -- Josh English Joshua.R.English at gmail.com http://joshenglish.livejournal.com From rshepard at appl-ecosys.com Mon Mar 28 19:41:05 2011 From: rshepard at appl-ecosys.com (Rich Shepard) Date: Mon, 28 Mar 2011 10:41:05 -0700 (PDT) Subject: [portland] Rate question In-Reply-To: References: Message-ID: On Mon, 28 Mar 2011, Josh English wrote: > ... extra features added to it. I've been asked to come back as a contract > employee to get it set up. > > I suspect this will take me a day or two, probably over the weekend. I > can't imagine this will take more than four hours. > > What is an acceptable rate to charge these people? Josh, What is the value to the client? I recommend that you sit down with that third department's decision-maker for a talk. Ask why they want this tool, what it costs them to continue without it, and what it will do for them if they do have it. It's a discussion and you want to both understand their position and, more importantly, have them come to realize the value you'll be providing. Once you set a dollar amount on the value to them of having your tool you can set a fee as a proportion of that amount. It should be high enough to make you feel good and sufficiently less than their cost of not having it that your fee is seen as a great bargain. Keep the discussion focused on them and not on you. If they ask you to cut your fee, ask them what part of the job they want you to exclude. If you have a productive and effective conversation money will not be an issue. Rich From xwraithanx at gmail.com Mon Mar 28 19:47:53 2011 From: xwraithanx at gmail.com (Chris McDonald) Date: Mon, 28 Mar 2011 10:47:53 -0700 Subject: [portland] Rate question In-Reply-To: References: Message-ID: I'd be careful. If you wrote that during company time at the last company then (depending on paperwork signed) they likely own the application and source. So taking it and reselling it, even with extra features/rebranding may be breaking a legally binding contract. As for rate, that is always something to be negotiated between you and the employer. I tend to give clients I like working with and projects I like working on lower rates (than my midline) so I encourage continuing work with them. The inverse is also true, clients I don't like working with or projects I don't like working on I aim higher to get my time's worth since I am doing something that I don't want to continue doing but if they are willing to pay me extra I'll keep working on it. The trick is finding your value, which varies from person to person how much they think their time and skills are worth, especially within the context of another company. My suggestion, if you don't think you'll scare them off and they are business people who know how to negotiate, aim a bit higher, let them negotiate you down a little bit. As Mr. Sheen would say 'Bi-winning' you feel like you are getting as much as you are worth, they feel like they got a deal too since they talked you down a bit. If they aren't business types, then aim for what you want, chances are they wont challenge it unless they have to. -Chris 'Wraithan' McDonald On Mon, Mar 28, 2011 at 10:33 AM, Josh English wrote: > At my last job I created a time clock program to make my life easier. > I gave it to a different department, too. Then, last July, I was > canned. > > Programming was not part of my job description at the time. > > Now a third department wants to use my program and they want a few > extra features added to it. I've been asked to come back as a contract > employee to get it set up. > > I suspect this will take me a day or two, probably over the weekend. I > can't imagine this will take more than four hours. > > What is an acceptable rate to charge these people? > > Here's some more context: My wife works for this third department. I > sometimes work as a math tutor (high-school algebra to college > calculus) at $20/hr. > > My degree is in education. > > Any suggestions? I'm not going to say no, I just want to know what's > market-rate fair. > > -- > Josh English > Joshua.R.English at gmail.com > http://joshenglish.livejournal.com > _______________________________________________ > Portland mailing list > Portland at python.org > http://mail.python.org/mailman/listinfo/portland > From pacopablo at pacopablo.com Mon Mar 28 19:46:56 2011 From: pacopablo at pacopablo.com (John Hampton) Date: Mon, 28 Mar 2011 10:46:56 -0700 Subject: [portland] Rate question In-Reply-To: References: Message-ID: <4D90C990.7050405@pacopablo.com> On 3/28/11 10:33 AM, Josh English wrote: > Any suggestions? I'm not going to say no, I just want to know what's > market-rate fair. Well, for computer work, ie, sysadmin stuff, etc. A normal rate is around $125/hr. For programming, I would likely charge a similar rate. I definitely wouldn't go below $75/hr. Obviously, you have a previous relationship with the company, as well as a tangential existing relationship. If you think $75/hr to $125/hr is too much, then you can agree on a fixed price for the enhancement. As a consumer, I like fixed prices. As a programmer, I hate them. Things always tend to be a bit more complicated then expected. Another alternative is to charge the higher rate, and then discount the bill if you feel it is too much. Whatever you do, don't sell yourself short. This is business, and you have a skill that they value. Programming may not be your primary skill, but you obviously created something of value for them. You are the expert. -John From xwraithanx at gmail.com Mon Mar 28 20:10:52 2011 From: xwraithanx at gmail.com (Chris McDonald) Date: Mon, 28 Mar 2011 11:10:52 -0700 Subject: [portland] Rate question In-Reply-To: <4D90C990.7050405@pacopablo.com> References: <4D90C990.7050405@pacopablo.com> Message-ID: See, that is the fun thing about rates, your rates are higher than I'd charge. Even your lower rate is higher than my normal rate, by a significant margin, a project that I'd enjoy doing (there for giving a lower rate) now a days I'd charge $40/hr and projects that I don't enjoy would be $60/hr. Previous relationship or not, I base my rate on how fun the project will be and how much I like working with the client, unless I am desperate for a job, then I'll shoot a little lower to get something going. -Wraithan On Mon, Mar 28, 2011 at 10:46 AM, John Hampton wrote: > On 3/28/11 10:33 AM, Josh English wrote: >> >> Any suggestions? I'm not going to say no, I just want to know what's >> market-rate fair. > > Well, for computer work, ie, sysadmin stuff, etc. ?A normal rate is around > $125/hr. ?For programming, I would likely charge a similar rate. I > definitely wouldn't go below $75/hr. > > Obviously, you have a previous relationship with the company, as well as a > tangential existing relationship. ?If you think $75/hr to $125/hr is too > much, then you can agree on a fixed price for the enhancement. ?As a > consumer, I like fixed prices. ?As a programmer, I hate them. ?Things always > tend to be a bit more complicated then expected. ?Another alternative is to > charge the higher rate, and then discount the bill if you feel it is too > much. > > Whatever you do, don't sell yourself short. ?This is business, and you have > a skill that they value. ?Programming may not be your primary skill, but you > obviously created something of value for them. ?You are the expert. > > -John > > _______________________________________________ > Portland mailing list > Portland at python.org > http://mail.python.org/mailman/listinfo/portland > From ethan at stoneleaf.us Mon Mar 28 20:13:23 2011 From: ethan at stoneleaf.us (Ethan Furman) Date: Mon, 28 Mar 2011 11:13:23 -0700 Subject: [portland] Rate question In-Reply-To: References: Message-ID: <4D90CFC3.5010300@stoneleaf.us> Josh English wrote: > Any suggestions? I'm not going to say no, I just want to know what's > market-rate fair. Good answers so far -- I just want to also remind you that as a contract employee your old company is not paying Unemployment Tax, Worker's Comp Tax, Social Security Tax, Vacation Time, Sick Time, etc, etc... actually, let me re-phrase -- they should be paying those costs in your rate, as it is a part of doing business. I am not a lawyer, but I don't think you'll have problems in this instance with copyright, etc, since it's the same company and they want to buy your time and expertise to work on their software. ~Ethan~ From lgellert at gmail.com Mon Mar 28 20:30:14 2011 From: lgellert at gmail.com (L G) Date: Mon, 28 Mar 2011 11:30:14 -0700 Subject: [portland] Rate question In-Reply-To: References: Message-ID: $20/hr in the programming arena is a starting wage that would normally include some benefits, time off, and probably mentoring from a senior developer. I agree with the earlier wage ranges listed by others on this thread. $75/hr sounds like a reasonable place to start negotiations for a short term, one off type gig. The earlier point about taxes is good too, in that you would have to pay self employment taxes and expenses out of your own pocket. Since you wrote the tool, you are the best person to maintain and extend it. If another consultant came in they would charge the customer for learning the system before they could make useful contributions. In that sense, you are a great deal to this company and their best option. Don't sell yourself short. Laurence On Mon, Mar 28, 2011 at 10:33 AM, Josh English wrote: > At my last job I created a time clock program to make my life easier. > I gave it to a different department, too. Then, last July, I was > canned. > > Programming was not part of my job description at the time. > > Now a third department wants to use my program and they want a few > extra features added to it. I've been asked to come back as a contract > employee to get it set up. > > I suspect this will take me a day or two, probably over the weekend. I > can't imagine this will take more than four hours. > > What is an acceptable rate to charge these people? > > Here's some more context: My wife works for this third department. I > sometimes work as a math tutor (high-school algebra to college > calculus) at $20/hr. > > My degree is in education. > > Any suggestions? I'm not going to say no, I just want to know what's > market-rate fair. > > -- > Josh English > Joshua.R.English at gmail.com > http://joshenglish.livejournal.com > _______________________________________________ > Portland mailing list > Portland at python.org > http://mail.python.org/mailman/listinfo/portland > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ckonstanski at pippiandcarlos.com Mon Mar 28 20:28:44 2011 From: ckonstanski at pippiandcarlos.com (Carlos Konstanski) Date: Mon, 28 Mar 2011 12:28:44 -0600 Subject: [portland] Rate question In-Reply-To: <4D90CFC3.5010300@stoneleaf.us> References: <4D90CFC3.5010300@stoneleaf.us> Message-ID: <4D90D35C.6090901@pippiandcarlos.com> On 03/28/2011 12:13 PM, Ethan Furman wrote: > Josh English wrote: >> Any suggestions? I'm not going to say no, I just want to know what's >> market-rate fair. > > Good answers so far -- I just want to also remind you that as a contract > employee your old company is not paying Unemployment Tax, Worker's Comp Tax, > Social Security Tax, Vacation Time, Sick Time, etc, etc... actually, let me > re-phrase -- they should be paying those costs in your rate, as it is a part > of doing business. > > I am not a lawyer, but I don't think you'll have problems in this instance > with copyright, etc, since it's the same company and they want to buy your > time and expertise to work on their software. > > ~Ethan~ I second this. Not only do you have to pay a huge percentage for taxes, but your health insurance rate is astronomical compared to that of a full-time employee. Companies know this better than anyone, since they write the checks for these costs that the employee doesn't see. Charging less then double what you'd make as an employee is completely unnecessary, as you'd cost the company no more than if they hired you outright. So $60 minimum, no exceptions. Carlos From kirk at strauser.com Mon Mar 28 20:25:51 2011 From: kirk at strauser.com (Kirk Strauser) Date: Mon, 28 Mar 2011 13:25:51 -0500 Subject: [portland] Rate question In-Reply-To: <4D90CFC3.5010300@stoneleaf.us> References: <4D90CFC3.5010300@stoneleaf.us> Message-ID: <4D90D2AF.9000907@strauser.com> On 03/28/2011 01:13 PM, Ethan Furman wrote: > Good answers so far -- I just want to also remind you that as a > contract employee your old company is not paying Unemployment Tax, > Worker's Comp Tax, Social Security Tax, Vacation Time, Sick Time, etc, > etc... actually, let me re-phrase -- they should be paying those costs > in your rate, as it is a part of doing business. > > I am not a lawyer, but I don't think you'll have problems in this > instance with copyright, etc, since it's the same company and they > want to buy your time and expertise to work on their software. I had this conversation with a friend yesterday. Also consider that if you're working remotely, then you're providing your own space, utilities, and IT support. There's measurable value to them in not having to pay for the rental of your office's square footage, computer, Windows/OS X/whatever, Office, etc. -- Kirk Strauser From xwraithanx at gmail.com Mon Mar 28 21:02:04 2011 From: xwraithanx at gmail.com (Chris McDonald) Date: Mon, 28 Mar 2011 12:02:04 -0700 Subject: [portland] Rate question In-Reply-To: <4D90D2AF.9000907@strauser.com> References: <4D90CFC3.5010300@stoneleaf.us> <4D90D2AF.9000907@strauser.com> Message-ID: > I am not a lawyer, but I don't think you'll have problems in this instance > with copyright, etc, since it's the same company and they want to buy your > time and expertise to work on their software. Ah, I misread I thought it was another company, not another department of the same company, disregard what I said about the legality.