From jek at discorporate.us Mon Jan 11 18:59:15 2010 From: jek at discorporate.us (jason kirtland) Date: Mon, 11 Jan 2010 09:59:15 -0800 Subject: [portland] Meeting TOMORROW 6:30pm: Geographic Information in Python Message-ID: <28dcaea51001110959l480a63bdo56664f0feca7efb8@mail.gmail.com> Portland Pythonistas, Our first meeting of 2010 is nearly upon us and it's going to be a big one! The theme for January is: Geographic Information. In addition to 3 (count 'em: 3!) great feature presentations, there will be a giveaway of GIS and Python books. And, after, we'll adjourn to the pub for beer. (Map to be provided.) First up we'll have Michel's Module of the Month, a lightning talk on a randomly chosen stdlib module by an unprepared volunteer. Then, Michel Pelletier will introduce Geohash, a clever text encoding of latitude and longitude information that is very useful for non-traditional databases, among other things. Geohashing was cooked up by Gustavo Niemeyer of Mocker and Dateutil fame. Webb Sprauge will talk about how to incorporate geographic data into relational databases using PostGIS and PostgreSQL. ?He will cover making a connection with psycopg2, modeling using geographic data types, and associating geographic data with non-geographic attributes. Building on Webb's talk, Tim Welch will introduce the geographic capabilities of the Django Framework (aka GeoDjango) which utilizes PostGIS and psycopg2. ?He'll briefly cover geometric data types, spatial operators, the Django geographic admin and creating geo-enabled web services. ?In addition to examples, at least one application will also be demoed. Tuesday January 12th 2010 6:30PM at Webtrends 851 SW 6th Ave. Map to Webtrends, etc. at http://www.meetup.com/pdxpython/ I hope to see everyone there! Cheers, Jason From rshepard at appl-ecosys.com Mon Jan 11 19:18:55 2010 From: rshepard at appl-ecosys.com (Rich Shepard) Date: Mon, 11 Jan 2010 10:18:55 -0800 (PST) Subject: [portland] Meeting TOMORROW 6:30pm: Geographic Information in Python In-Reply-To: <28dcaea51001110959l480a63bdo56664f0feca7efb8@mail.gmail.com> References: <28dcaea51001110959l480a63bdo56664f0feca7efb8@mail.gmail.com> Message-ID: On Mon, 11 Jan 2010, jason kirtland wrote: > The theme for January is: Geographic Information. Ah, too bad I cannot make it. > Webb Sprauge will talk about how to incorporate geographic data into > relational databases using PostGIS and PostgreSQL. He will cover making a > connection with psycopg2, modeling using geographic data types, and > associating geographic data with non-geographic attributes. As an aside, one aspect of using a dbms (and both PostGIS and postgres are excellent products) is that they are not topologically correct. That is, a common boundary between two polygons is stored twice, once for each polygon, rather than as a single arc with identification for the areas to each side. Folks who are interested in spatial analyses more than just computerized cartography ought to take a look at GRASS (Geographic Resources Analysis Support System) . The GUI is now written in Python using wxPython and modules can be written in Python or C. Rich From jek at discorporate.us Mon Jan 11 19:44:04 2010 From: jek at discorporate.us (jason kirtland) Date: Mon, 11 Jan 2010 10:44:04 -0800 Subject: [portland] Meeting TOMORROW 6:30pm: Geographic Information in Python In-Reply-To: <28dcaea51001110959l480a63bdo56664f0feca7efb8@mail.gmail.com> References: <28dcaea51001110959l480a63bdo56664f0feca7efb8@mail.gmail.com> Message-ID: <28dcaea51001111044x49fdc9b5q238c619d7a038323@mail.gmail.com> On Mon, Jan 11, 2010 at 9:59 AM, jason kirtland wrote: > > Webb Sprauge will talk about how to incorporate geographic data into > relational databases using PostGIS and PostgreSQL. ?He will cover > making a connection with psycopg2, modeling using geographic data > types, and associating geographic data with non-geographic attributes. Oops, that'd be Webb *Sprague*. Sorry about the typo Webb! From tim.j.welch at gmail.com Wed Jan 13 17:02:58 2010 From: tim.j.welch at gmail.com (Tim Welch) Date: Wed, 13 Jan 2010 08:02:58 -0800 Subject: [portland] Meeting TOMORROW 6:30pm: Geographic Information in Python In-Reply-To: <28dcaea51001111044x49fdc9b5q238c619d7a038323@mail.gmail.com> References: <28dcaea51001110959l480a63bdo56664f0feca7efb8@mail.gmail.com> <28dcaea51001111044x49fdc9b5q238c619d7a038323@mail.gmail.com> Message-ID: <3996251a1001130802x41c157ado8b5ddd2dcc6544cf@mail.gmail.com> Hey folks, thanks for coming out last night to listen to us. My presentation slides and source code are available through my blog post. http://tdubya.net/2010/01/13/geodjango-and-friends/ Hope to see you around, Tim On Mon, Jan 11, 2010 at 10:44 AM, jason kirtland wrote: > On Mon, Jan 11, 2010 at 9:59 AM, jason kirtland wrote: >> >> Webb Sprauge will talk about how to incorporate geographic data into >> relational databases using PostGIS and PostgreSQL. ?He will cover >> making a connection with psycopg2, modeling using geographic data >> types, and associating geographic data with non-geographic attributes. > > Oops, that'd be Webb *Sprague*. ?Sorry about the typo Webb! > _______________________________________________ > Portland mailing list > Portland at python.org > http://mail.python.org/mailman/listinfo/portland > From freyley at gmail.com Wed Jan 13 18:49:22 2010 From: freyley at gmail.com (Jeff Schwaber) Date: Wed, 13 Jan 2010 09:49:22 -0800 Subject: [portland] Agile Open Northwest Message-ID: <8db4a1911001130949w17f5c090x74efe56b444eaef1@mail.gmail.com> For those interested in agile, here's the details and the email sent to the xpportland list, which you might want to join. =) - *What:* An Open Space event discussing agile practices and techniques. - *Where:* Seattle Center , in several of the Northwest Rooms. - *When:* February 9 and 10, 2010 - *Who:* Anyone with some degree of experience in agile methods. Registration limited to 125 people. - *Cost:* $125 for the two day event, including continental breakfast and box lunch each day. ---------- Forwarded message ---------- From: Kimberly Wallmark Date: Mon, Jan 4, 2010 at 12:06 PM Subject: [xpportland] Other events of interest To: xpportland at yahoogroups.com Agile Open Northwest is a small local conference in February. It's a great way to meet local practitioners and have focused discussions of interesting issues. It's also a good example of successful self- organization -- it's a completely Open Space conference, with no pre- scheduling of sessions. It alternates between Portland and Seattle, and this is Seattle's year. Registration is still open: http://www.agileopennorthwest.com/2010/index.php Agile 2010 ("big Agile") is in Tennessee in August. This is the biggest agile software development conference around. It attracts an international audience with a huge range of viewpoints and experience. Submissions and early registration are both open: http://www.agile2010.org/ --Kim -------------- next part -------------- An HTML attachment was scrubbed... URL: From igal at pragmaticraft.com Wed Jan 13 18:57:57 2010 From: igal at pragmaticraft.com (Igal Koshevoy) Date: Wed, 13 Jan 2010 09:57:57 -0800 Subject: [portland] Meeting notes: January 12, 2009 -- Geohash, PostGIS, GeoDjango Message-ID: <4B4E09A5.7030401@pragmaticraft.com> Please post any corrections or additions. PRESENTATIONS "The __future__ module" by Jason Kirtland -- @cheeseinspector, http://discorporate.us/jek/ * The "__future__" module lets you use features of Python interpreters from within some older Python interpreters. * Future features include: using the Python 2.6 "with" statement in Python 2.5, making "print" a function in Python 2.6 like in 3.0, etc. * Full set of future features and their documentation: http://docs.python.org/library/__future__.html "Geohash" by Michel Pelletier -- http://idealist.org/ * Geohash is an algorithm for producing a short code ("hash") that refers to a geographical location. The longer the hash, the more precise the latitude/longitude encoded in it. A unique property of the Geohash is that you can remove characters off the right side of the string and it'll still be valid, although less precise. * Overview of Geohash: http://en.wikipedia.org/wiki/Geohash * Site for finding Geohashes: http://geohash.org/ * Example of how trimming a Geohash string degrades accuracy: http://mappinghacks.com/2008/05/29/geohash-implemented-in-python/ * Geohash is included in PostGIS * There are many python implementations, the python-geohash with a C extension is fast and actively maintained: http://code.google.com/p/python-geohash/ "PostGIS" by Webb Sprague * PostGIS adds support for geographic objects to PostgreSQL databases. * Overview of PostGIS: http://en.wikipedia.org/wiki/PostGIS * Site for PostGIS distribution: http://postgis.refractions.net/ * Manual for PostGIS: http://postgis.refractions.net/documentation/manual-1.4/ * In PostGIS, geography is stored as geometric types: "point" has latitude/longitude, "line" which has two points, "polygon" has a series of connected lines, etc. These are stored in PostgreSQL as "geometry" columns. * You can run database queries to find centroids of a polygon, get distances between objects, select items within a polygon, select items a certain distance from a point, get the Geohash for a geometric object, etc. * Performance is an important issue because some operations can be quite expensive. Ways to address this include adding indexes, creating lower-resolution copies of complex geometric shapes that are quicker to run queries on, storing pre-calculated data, etc. "GeoDjango" by Tim Welch -- @t_doubleuu, http://tdubya.net/ * These notes provide additional content to the slides that Tim posted, you should probably read both: http://tdubya.net/2010/01/13/geodjango-and-friends/ * Tim Welch works on open source Python GIS projects like: o Open OceanMap, "a data collection tool used to effectively collect local expert knowledge in support of marine spatial planning": http://www.ecotrust.org/ocean/OpenOceanMap.html o MarineMap, "a web-based decision support tool for open and participatory spatial planning in the marine environment.": http://marinemap.org/ * GeoDjango is a geospatial extension for the Django web framework. o Site: http://geodjango.org/ o Documentation: http://geodjango.org/docs/ o Tutorial, highly recommended: http://geodjango.org/docs/tutorial.html * GeoDjango works best with PostGIS (PostgreSQL), but will also work with SpatiaLite (SQLite), Oracle Spatial (Oracle), and MySQL. * GeoDjango provides geometry fields for use in Django models: PointField, LineStringField, PolygonField, MultiPolygonField, etc. * GeoManager allows Django models to perform spatial queries: o Relationship: contains, covers, crosses, intersects, overlaps, touches. o Measurement: area, length, perimeter, distance o Geometry: difference, intersection, union o Serialization: GeoJSON, KML, SVG, GeoRSS * The "django.contrib.gis.geos" module provides Python classes for representing geometric types like Point and Polygon. These classes include useful methods like calculating area of a polygon, creating a polygon that's the difference between other polygons, etc. These classes provide a way to specify the spatial reference system (SRID) and transform between them, e.g., go from latitude/longitude to x/y meters from a particular place. * You can get the PostgreSQL INSERT statement to add PostGIS support for a particular SRID from: http://spatialreference.org/ * In Django, you'll need to tell settings.py to use the "django.contrib.gis.db.backends.postgis" engine for the database and include "django.contrib.gis" in the INSTALLED_APPS. * The GeoDjango "ogrinspect" Django manage.py subcommand can read a dataset and generate the code for a Django model with all its attributes. * The GeoDjango admin interface "admin.OSMGeoAdmin" can let you view and edit your mapping data visually on the web and overlay it on the Open Street Map data set. * You may also be interested in GeoExt, a JavaScript toolkit for rich web mapping: http://www.geoext.org/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From webb.sprague at gmail.com Wed Jan 13 20:12:48 2010 From: webb.sprague at gmail.com (Webb Sprague) Date: Wed, 13 Jan 2010 11:12:48 -0800 Subject: [portland] Meeting notes: January 12, 2009 -- Geohash, PostGIS, GeoDjango In-Reply-To: <4B4E09A5.7030401@pragmaticraft.com> References: <4B4E09A5.7030401@pragmaticraft.com> Message-ID: Thanks to Igal for the summary, and thanks to the group for having us last night to talk! -Webb On Wed, Jan 13, 2010 at 9:57 AM, Igal Koshevoy wrote: > Please post any corrections or additions. > > PRESENTATIONS From kirby.urner at gmail.com Thu Jan 14 10:30:49 2010 From: kirby.urner at gmail.com (kirby urner) Date: Thu, 14 Jan 2010 01:30:49 -0800 Subject: [portland] Meeting notes: January 12, 2009 -- Geohash, PostGIS, GeoDjango In-Reply-To: <4B4E09A5.7030401@pragmaticraft.com> References: <4B4E09A5.7030401@pragmaticraft.com> Message-ID: On Wed, Jan 13, 2010 at 9:57 AM, Igal Koshevoy wrote: > Please post any corrections or additions. > Glad for the write-up, sorry I missed this. I've been harping on 2.6 over on edu-sig, got a thread going. Good to have all those new format specifiers. Andre has just reworded the page to encourage that version or above for the 2.xers. http://mail.python.org/pipermail/edu-sig/2010-January/thread.html#9720 Also, I've been posting notes on the 2nd edition of Mathematics for the Digital Age and Programming in Python, by Maria and Gary Litvin. This is a hybrid math and computer science course, modeled after Concrete Mathematics in some ways. We could use more of this kind of stuff in Oregon, someone tell Intel? Phillips Academy, meet Saturday Academy, eh? http://www.skylit.com/mathandpython.html PostgreSQL rocks. Finally met up Rami Kassab of Thinktype, a local Python and Django shop. OK, to sleep, perchance to dream... Kirby From rshepard at appl-ecosys.com Thu Jan 21 18:15:18 2010 From: rshepard at appl-ecosys.com (Rich Shepard) Date: Thu, 21 Jan 2010 09:15:18 -0800 (PST) Subject: [portland] Protecting Intellectual Property In Python Applications Message-ID: Python is an interpreted scripting language with outstanding mathematical libraries and a great UI development tool in wxPython. Unlike complied languages such as C the underlying code is visible to everyone who looks at it. This is a problem when the application is unique and proprietary. Consider the context. Suppose you wrote an application that analyzed -- in real time -- a commercial building's energy use and made adjustments that saved 50% of the energy formerly consumed. You want to sell this application to building owners and managers but you don't want actual or potential competitors to appropriate your intellectual property that figuring out the energy savings represents. It's your business, your ideas, and your potential source of financial independence. How would you protect the underlying source code from being mis-used by a potential competitor when you sold your application to clients? My situation is analogous and I don't want to start over by re-writing everything in C. Your suggestions and recommendations are wanted. Rich From monk at netjunky.com Thu Jan 21 18:31:25 2010 From: monk at netjunky.com (jonathan karon) Date: Thu, 21 Jan 2010 09:31:25 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: Message-ID: Rich, On Jan 21, 2010, at 9:15 AM, Rich Shepard wrote: > How would you protect the > underlying source code from being mis-used by a potential competitor > when > you sold your application to clients? > I've used some of the bundling tools mentioned here to build a standalone distributable app: http://effbot.org/zone/python-compile.htm I'm not sure whether any of these pre-compiles your source to bytecode and whether the distributable must include the source python files or not, but it's a place to start. Python bytecode is certainly not immune from reverse-engineering, but it's a big step better than raw source with comments. You could also look at pyobfuscator: http://www.lysator.liu.se/~astrand/projects/pyobfuscate/ ~jonathan From georgedorn at gmail.com Thu Jan 21 19:11:00 2010 From: georgedorn at gmail.com (Sam Thompson) Date: Thu, 21 Jan 2010 10:11:00 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: Message-ID: <78869ed71001211011gaa64dbdga54e0899293105fc@mail.gmail.com> If the situation allows, sell a service instead of an application. Run the core IP on your own server and provide a client, such as using a web app or wxwidgets. OTOH, if your IP is the code interfacing with hardware, this probably won't work for you. > On Jan 21, 2010, at 9:15 AM, Rich Shepard wrote: > >> How would you protect the >> underlying source code from being mis-used by a potential competitor when >> you sold your application to clients? From python at dylanreinhardt.com Thu Jan 21 19:15:35 2010 From: python at dylanreinhardt.com (Dylan Reinhardt) Date: Thu, 21 Jan 2010 10:15:35 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: Message-ID: <4c645a721001211015m4ed06749j71ede0dd474cc431@mail.gmail.com> On Thu, Jan 21, 2010 at 9:15 AM, Rich Shepard wrote: > Python is an interpreted scripting language with outstanding mathematical > libraries and a great UI development tool in wxPython. Unlike complied > languages such as C the underlying code is visible to everyone who looks at > it. This is a problem when the application is unique and proprietary. > > There are technical approaches to this problem, but I suspect the real problem is you have the wrong distribution model. If your algo is truly unique and highly valuable, I would seriously consider a SaaS model. That way you sell access/usage, not copies of your trade secrets. SaaS used to be regarded with some suspicion by corporate IT, but the cost-benefit on that shifted a while ago. It's now likely to be seen as *less* risky than installing your custom-built desktop app. The fact that you also get better control is a serious win-win. For what that's worth... Dylan -------------- next part -------------- An HTML attachment was scrubbed... URL: From kirby.urner at gmail.com Thu Jan 21 19:17:49 2010 From: kirby.urner at gmail.com (kirby urner) Date: Thu, 21 Jan 2010 10:17:49 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: Message-ID: On Thu, Jan 21, 2010 at 9:15 AM, Rich Shepard wrote: > ?Python is an interpreted scripting language with outstanding mathematical > libraries and a great UI development tool in wxPython. Unlike complied > languages such as C the underlying code is visible to everyone who looks at > it. This is a problem when the application is unique and proprietary. > > ?Consider the context. Suppose you wrote an application that analyzed -- in > real time -- a commercial building's energy use and made adjustments that > saved 50% of the energy formerly consumed. You want to sell this application > to building owners and managers but you don't want actual or potential > competitors to appropriate your intellectual property that figuring out the > energy savings represents. It's your business, your ideas, and your > potential source of financial independence. How would you protect the > underlying source code from being mis-used by a potential competitor when > you sold your application to clients? > > ?My situation is analogous and I don't want to start over by re-writing > everything in C. Your suggestions and recommendations are wanted. > > Rich > Keep the secret sauce in the cloud? Open source the client side only? There are ways to distribute Python without .py source files though, which others may speak to. Bittorrent is a wx app yes? Kirby From robin at alldunn.com Thu Jan 21 19:29:48 2010 From: robin at alldunn.com (Robin Dunn) Date: Thu, 21 Jan 2010 10:29:48 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: Message-ID: <4B589D1C.3040804@alldunn.com> On 1/21/10 10:17 AM, kirby urner wrote: > Bittorrent is a wx app yes? It used to be. I think they've switched to PyGTK in more recent versions though. -- Robin Dunn Software Craftsman http://wxPython.org From rcoder at gmail.com Thu Jan 21 19:36:18 2010 From: rcoder at gmail.com (Lennon Day-Reynolds) Date: Thu, 21 Jan 2010 10:36:18 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: Message-ID: <5d4c61241001211036u32c7d44av823e85a4aaaa35d6@mail.gmail.com> On Thu, Jan 21, 2010 at 9:15 AM, Rich Shepard wrote: > [...] You want to sell this application > to building owners and managers but you don't want actual or potential > competitors to appropriate your intellectual property that figuring out the > energy savings represents. It's your business, your ideas, and your > potential source of financial independence. How would you protect the > underlying source code from being mis-used by a potential competitor when > you sold your application to clients? > > ?My situation is analogous and I don't want to start over by re-writing > everything in C. Your suggestions and recommendations are wanted. There are a few options. If you're willing to limit distribution to only Windows systems, you can use py2exe to create a standalone "binary" that at least conceals the Python source code. As others have suggested, a bytecode-only archive will also frustrate casual attempts at copying your code. Unfortunately, no copy protection or obfuscation scheme is going to do more than keep the honest folks honest -- in a DRM arms race, you can pretty much guarantee that the would-be reverse engineers will eventually win. Given time and motivation, someone will figure out how to disassemble your obfuscated code, or simply attach a debugger to the running program and trace the Python VM calls it uses. As an alternative, have you considered simply attaching some language to your licensing agreement that forbids reverse engineering and redistribution? If you're offering a useful product that honestly saves people money (and offering support and services along with it) why should they balk at paying you a fair price for a license, or risk legal consequences by giving it away to others? From your example, it doesn't sound like you're going to be dealing with the typical software pirates (college kids cracking their Photoshop torrents, etc.). Furthermore, if you really need it to protect yourself from competitors, patent some useful, novel piece of your implementation. Then you don't have protection *only* for the Python source code -- you can actually go after folks who rip off your core algorithms and architecture. In short, DRM is no substitute for a reasonable business model. Just ask the recording industry. Provide something people want, and stay ahead of pirates by keeping your customers happy. -- Lennon Day-Reynolds http://rcoder.net/ From mccredie at gmail.com Thu Jan 21 19:47:47 2010 From: mccredie at gmail.com (Matt McCredie) Date: Thu, 21 Jan 2010 10:47:47 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: Message-ID: <9e95df11001211047m57987fa9tb5bf927383fcd6a0@mail.gmail.com> On Thu, Jan 21, 2010 at 9:15 AM, Rich Shepard wrote: > ?Python is an interpreted scripting language with outstanding mathematical > libraries and a great UI development tool in wxPython. Unlike complied > languages such as C the underlying code is visible to everyone who looks at > it. This is a problem when the application is unique and proprietary. > > ?Consider the context. Suppose you wrote an application that analyzed -- in > real time -- a commercial building's energy use and made adjustments that > saved 50% of the energy formerly consumed. You want to sell this application > to building owners and managers but you don't want actual or potential > competitors to appropriate your intellectual property that figuring out the > energy savings represents. It's your business, your ideas, and your > potential source of financial independence. How would you protect the > underlying source code from being mis-used by a potential competitor when > you sold your application to clients? > > ?My situation is analogous and I don't want to start over by re-writing > everything in C. Your suggestions and recommendations are wanted. You don't have to rewrite _everything_ in C. You could just rewrite the core algorithm as a .pyd that can be loaded by your python code. You can also write a plain dll/so that you can could call using ctypes. You coud even create a COM object if you are using Windows (load with comtypes or pywin32). That being said, I work on a similar project and we use a tool (developed in house) that is similar to py2exe for packaging up our product into an executable. That only gets you part of the way since the executable still contains the byte code. We also protect ourselves via licensing. Additionally have an obfuscation step. We don't try to obfuscate the algorithm, but we do scramble the names of some of the variables. We have a very specific reason for obfuscating the names of these variables, and it probably doesn't make sense in most cases. HTH Matt McCredie From andy at clearwind.ca Wed Jan 20 06:04:25 2010 From: andy at clearwind.ca (Andy McKay) Date: Tue, 19 Jan 2010 21:04:25 -0800 Subject: [portland] Free DjangoSki tickets for charities Message-ID: <1B6B77F4-3243-4372-B441-FAFD9426A045@clearwind.ca> Hi there, We've got some tickets to give away to DjangoSki, thanks to the Python Foundation. So we thought we'd give them to members of charities or non-profits who want to come to DjangoSki. Get to come and do some sprinting and listen to the keynotes in our un-conference event: http://clearwind.ca/djangoski . Thanks to a kind sponsor here, we've also got free accomodation. So that means: - free entrance - free lunch, dinner, coffee etc and the occasional donut - free accomodation All you have to do is get up to Whistler. We can't give you free skiing or beer I'm afraid. If you are interested in one of these tickets, or want to nominate someone, drop me a line before the end of this week. And of course if you don't work for a charity, but want to come, registration is still open. Cheers -- Andy McKay, @clearwind http://clearwind.ca/djangoski From igal at pragmaticraft.com Fri Jan 15 10:28:09 2010 From: igal at pragmaticraft.com (Igal Koshevoy) Date: Fri, 15 Jan 2010 01:28:09 -0800 Subject: [portland] OT: Open Source Bridge 2010 town hall meeting on January 28 Message-ID: We're busy planning the Open Source Bridge 2010 conference in Portland: * Attend our town hall on January 28: http://calagator.org/events/1250458164 * Subscribe to our blog: http://opensourcebridge.org/ * Join our mailing list: http://groups.google.com/group/osbridge * Follow @osbridge: http://twitter.com/osbridge && http://identi.ca/osbridge * Obey @osbridgebot: http://twitter.com/osbridgebot && http://identi.ca/osbridgebot See you at the town hall! -igal ... The Conference for Open Source Citizens is back in 2010, this time with MORE: * Sessions for collaborative hacking * Coffee in the afternoon * Ways to grow our community * Fabulous opportunities to volunteer * and... MORE COOKIES! Join the Open Source Bridge Organization Team for a Town Hall at Nedspace Oldtown on Thursday, January 28 at 7pm. We'll be sharing with you our plans for this year's conference as well as announcing the date we'll open the call for proposals. We also want to hear your input about the sessions you'd like to see this year. Open Source Bridge cannot happen without community involvement. Come hear the volunteer opportunities we need filled and sign up to make your event a success. What: Open Source Bridge Town Hall Where: Nedspace, Oldtown - 117 NW Fifth Ave. (btwn Couch and Davis) When: Thursday, January 28, 7PM -------------- next part -------------- An HTML attachment was scrubbed... URL: From lgellert at gmail.com Thu Jan 21 18:49:45 2010 From: lgellert at gmail.com (LG) Date: Thu, 21 Jan 2010 09:49:45 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: Message-ID: <4B5893B9.40109@gmail.com> Jonathon's points are great. I would add in the web enabled world, the UI layer could be setup to call services on a backend server you host and control. That way only the UI layer is being distributed to the customer and the valuable logic is protected behind your firewall. This is called Service Oriented Architecture (SOA) and is gaining popularity (please forgive the buzz word). I'm not sure if it would work fast enough for your specific needs but it is one option. If anything SOA helps me think about the distinct layers of an application and how they relate, even if it is all running inside just one machine. Java would be a middle ground compiled language, compared to C. There is a nice math package by apache commons I have used for stats in java. Best, Laurence Rich Shepard wrote: > Python is an interpreted scripting language with outstanding > mathematical > libraries and a great UI development tool in wxPython. Unlike complied > languages such as C the underlying code is visible to everyone who > looks at > it. This is a problem when the application is unique and proprietary. > > Consider the context. Suppose you wrote an application that analyzed > -- in > real time -- a commercial building's energy use and made adjustments that > saved 50% of the energy formerly consumed. You want to sell this > application > to building owners and managers but you don't want actual or potential > competitors to appropriate your intellectual property that figuring > out the > energy savings represents. It's your business, your ideas, and your > potential source of financial independence. How would you protect the > underlying source code from being mis-used by a potential competitor when > you sold your application to clients? > > My situation is analogous and I don't want to start over by re-writing > everything in C. Your suggestions and recommendations are wanted. > > Rich > > > _______________________________________________ > Portland mailing list > Portland at python.org > http://mail.python.org/mailman/listinfo/portland > From gordon.morehouse at gmail.com Thu Jan 21 21:36:41 2010 From: gordon.morehouse at gmail.com (Gordon Morehouse) Date: Thu, 21 Jan 2010 12:36:41 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: Message-ID: I'm surprised nobody has mentioned Jython as a potential solution. Compile to Java bytecode. http://www.jython.org/ It was the first thing that came to my mind. Of course, this wouldn't prevent dedicated reverse engineers, nor would anything else other than presenting your product as a service. -Gordon > ?Python is an interpreted scripting language with outstanding mathematical > libraries and a great UI development tool in wxPython. Unlike complied > languages such as C the underlying code is visible to everyone who looks at > it. This is a problem when the application is unique and proprietary. > > ?Consider the context. Suppose you wrote an application that analyzed -- in > real time -- a commercial building's energy use and made adjustments that > saved 50% of the energy formerly consumed. You want to sell this application > to building owners and managers but you don't want actual or potential > competitors to appropriate your intellectual property that figuring out the > energy savings represents. It's your business, your ideas, and your > potential source of financial independence. How would you protect the > underlying source code from being mis-used by a potential competitor when > you sold your application to clients? > > ?My situation is analogous and I don't want to start over by re-writing > everything in C. Your suggestions and recommendations are wanted. From aaron.devore at gmail.com Thu Jan 21 23:13:05 2010 From: aaron.devore at gmail.com (Aaron DeVore) Date: Thu, 21 Jan 2010 14:13:05 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: <9e95df11001211047m57987fa9tb5bf927383fcd6a0@mail.gmail.com> References: <9e95df11001211047m57987fa9tb5bf927383fcd6a0@mail.gmail.com> Message-ID: <2ead2fb1001211413o38153977g793715d4b76bd5c6@mail.gmail.com> On Thu, Jan 21, 2010 at 10:47 AM, Matt McCredie wrote: > You don't have to rewrite _everything_ in C. You could just rewrite > the core algorithm as a .pyd that can be loaded by your python code. > You can also write a plain dll/so that you can could call using > ctypes. You coud even create a COM object if you are using Windows > (load with comtypes or pywin32). If you don't want to rewrite in C but still want the obfuscate via compiling option then Cython could be a good option. It is a Python-based language that compiles down to C and the Python C API. The downside is that it requires a Cython and C compilers. -Aaron From rshepard at appl-ecosys.com Thu Jan 21 23:52:30 2010 From: rshepard at appl-ecosys.com (Rich Shepard) Date: Thu, 21 Jan 2010 14:52:30 -0800 (PST) Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: <2ead2fb1001211413o38153977g793715d4b76bd5c6@mail.gmail.com> References: <9e95df11001211047m57987fa9tb5bf927383fcd6a0@mail.gmail.com> <2ead2fb1001211413o38153977g793715d4b76bd5c6@mail.gmail.com> Message-ID: On Thu, 21 Jan 2010, Aaron DeVore wrote: > If you don't want to rewrite in C but still want the obfuscate via > compiling option then Cython could be a good option. It is a Python-based > language that compiles down to C and the Python C API. The downside is > that it requires a Cython and C compilers. Aaron, Without going into a lot of detail, one business service we sell is creation of approximate reasoning models to address multi-objective/multi-criteria decision-making under conditions of uncertainty. There is only a handfull of us doing this world-wide, and we specialize in the environmental and resource allocation sectors. We'll also do general business when asked. These models are based on the mathematics of fuzzy sets and fuzzy logic and parallel processing fuzzy inference engines have all been custom developed. It is this core inference engine that I want to protect. I don't believe in software/business process patents, but these models have very high value for the companies that use them and, therefore, for us too. I'll find and learn Cpython and use that with gcc. Thanks very much for the pointer. And thanks to everyone else for contributing ideas and suggestions. Rich From aaron.devore at gmail.com Fri Jan 22 00:15:47 2010 From: aaron.devore at gmail.com (Aaron DeVore) Date: Thu, 21 Jan 2010 15:15:47 -0800 Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: References: <9e95df11001211047m57987fa9tb5bf927383fcd6a0@mail.gmail.com> <2ead2fb1001211413o38153977g793715d4b76bd5c6@mail.gmail.com> Message-ID: <2ead2fb1001211515t1f324d6bo35d2938c3b18ec34@mail.gmail.com> On Thu, Jan 21, 2010 at 2:52 PM, Rich Shepard wrote: > ?I'll find and learn Cpython and use that with gcc. Thanks very much for > the pointer. And thanks to everyone else for contributing ideas and > suggestions. Rich, Cython, not Cpython. Just making sure you're not getting a bunch of search results about the CPython implementation. :) -Aaron From rshepard at appl-ecosys.com Fri Jan 22 00:35:05 2010 From: rshepard at appl-ecosys.com (Rich Shepard) Date: Thu, 21 Jan 2010 15:35:05 -0800 (PST) Subject: [portland] Protecting Intellectual Property In Python Applications In-Reply-To: <2ead2fb1001211515t1f324d6bo35d2938c3b18ec34@mail.gmail.com> References: <9e95df11001211047m57987fa9tb5bf927383fcd6a0@mail.gmail.com> <2ead2fb1001211413o38153977g793715d4b76bd5c6@mail.gmail.com> <2ead2fb1001211515t1f324d6bo35d2938c3b18ec34@mail.gmail.com> Message-ID: On Thu, 21 Jan 2010, Aaron DeVore wrote: > Cython, not Cpython. Yup. Caught the difference. :-) Many thanks, Rich From brettlsmythe at gmail.com Mon Jan 25 20:48:26 2010 From: brettlsmythe at gmail.com (Brett Smythe) Date: Mon, 25 Jan 2010 11:48:26 -0800 Subject: [portland] Northwest Python Day Transportation Message-ID: First off forgive me if I'm using the mailing list incorrectly, I haven't used / been part of one before. Secondly I know there was some talk of carpooling for the upcoming Northwest Python Day, is there someone specifically I should be talking to or perhaps someplace this is being organized online? Thanks in advance, Brett -------------- next part -------------- An HTML attachment was scrubbed... URL: From RWagoner at volt.com Mon Jan 25 20:57:20 2010 From: RWagoner at volt.com (Wagoner, Roger) Date: Mon, 25 Jan 2010 11:57:20 -0800 Subject: [portland] Python Developers Message-ID: Hello, I attended the Python event the other week and introduced myself, and just wanted to say thank you. I currently have 2 Python roles open for direct hire positions in Portland, and I would be happy to provide more detail - please send resume to rwagoner at volt.com if interested. Thanks! If I have sent this to the wrong list please let me know. Roger Wagoner -------------- next part -------------- An HTML attachment was scrubbed... URL: From python at dylanreinhardt.com Tue Jan 26 01:22:14 2010 From: python at dylanreinhardt.com (Dylan Reinhardt) Date: Mon, 25 Jan 2010 16:22:14 -0800 Subject: [portland] fun with comparison operators and booleans Message-ID: <4c645a721001251622n34dc0b1cibe375e049c51473a@mail.gmail.com> There was a fun thread on Baypiggies today, where someone asked: ---- Can anyone explain the following: >>>* a = 1*>>>* b = 2*>>>* alist = [5,6]*>>>* print a in alist*False >>>* a in alist == b in alist*False >>>* a in alist == a in alist*False >>>* bool(a in alist) == bool(b in alist) # this does what we expect*True >>>* c = 5*>>>* c in alist == c in alist*False ---- After some guesses and discussion came this cool answer: http://mail.python.org/pipermail/baypiggies/2010-January/006139.html Well worth a read... Dylan -------------- next part -------------- An HTML attachment was scrubbed... URL: