From pybokeh at gmail.com Thu Mar 1 04:38:36 2012 From: pybokeh at gmail.com (pybokeh) Date: Wed, 29 Feb 2012 22:38:36 -0500 Subject: [CentralOH] How-To non-blocking GUI with Tkinter Message-ID: Hello, I am new to GUI programming and threading in Tkinter and I am basically trying to create a chat or instant messaging program for fun or as a learning experience. The problem I am having is my while loop doesn't loop through due to the mainloop() function since it doesn't return to the main thread until the root is closed or exited. So what ends up happening is I can receive an instant message only once from the client, but server can send message ok and the client receives the message fine. I've been doing a lot of searching and it appears I need to either run a separate thread for the part of the program that is waiting for the data from the client. I've also looked at tkinter.createfilehandler(), but I just don't know how to implement this. Any help with this in terms of documentation or reference material would be greatly appreciated. Thanks in advance! - Daniel Here's my server code (it is GUI): from Tkinter import * import socket class TCP_Server_GUI(Frame): def __init__(self, master): self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.max_data = 512 self.host = '127.0.0.1' self.port = 1060 self.server_socket.bind((self.host,self.port)) self.server_socket.listen(5) self.frame = Frame(master) self.frame.pack() self.lblServer = Label(self.frame, text="Server IP:") self.lblServer.grid(row=0, column=0) self.strServer = StringVar() self.Server = Entry(self.frame, textvariable=self.strServer, width=16, borderwidth=2) self.Server.grid(row=0, column=1) self.lblPort = Label(self.frame, text="Server Port:") self.lblPort.grid(row=1, column=0) self.strPort = StringVar() self.Port = Entry(self.frame, textvariable=self.strPort, width=6, borderwidth=2) self.Port.grid(row=1, column=1) self.lblHistory = Label(self.frame, text="Message History:") self.lblHistory.grid(row=2, column=0) self.History = Listbox(self.frame, height=5, width=50) self.History.grid(row=3, columnspan=2) self.sbar = Scrollbar(self.frame, orient=VERTICAL, command=self.History.yview) self.sbar.grid(row=3, column=2) self.History['yscrollcommand']=self.sbar.set self.lblMessage = Label(self.frame, text="Outgoing Message:") self.lblMessage.grid(row=4, column=0) self.strMessage = StringVar() self.Message = Entry(self.frame, textvariable=self.strMessage, borderwidth=2, width=50) self.Message.grid(row=5, columnspan=2) self.strServer.set(self.host) self.strPort.set(self.port) self.client_socket, self.client_address = self.server_socket.accept() def SendBtn(self): self.History.insert(END, self.host+':'+str(self.port)+'--->'+self.strMessage.get()) self.History.yview_scroll(1, "units") self.client_socket.send(self.strMessage.get()) self.strMessage.set('')""" if __name__ == "__main__": def SendBtn(): app.History.insert(END, app.host+':'+str(app.port)+'--->'+app.strMessage.get()) app.History.yview_scroll(1, "units") app.client_socket.send(app.strMessage.get()) print "Server sent data..." app.strMessage.set('') root = Tk() root.title("TCP Chat Server GUI") app = TCP_Server_GUI(root) app.btnSend = Button(app.frame,text="Send", command=SendBtn) app.btnSend.grid(row=6, column=0) def checkdata(): print "Checking for incoming message from client..." data = app.client_socket.recv(app.max_data) client_ip, client_port = app.client_address app.History.insert(END, client_ip+':'+str(client_port)+'--->'+str(data)) print "Inserted message into history..." root.update() print "Done checking for incoming data..." while True: checkdata() print "Excecuting main loop" root.mainloop() Client code (it is not GUI, just console): import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(("127.0.0.1", 1060)) while 1: data = raw_input ( "SEND( TYPE q or Q to Quit):" ) if (data <> 'Q' and data <> 'q'): client_socket.send(data) else: client_socket.send(data) client_socket.close() break; server_message = client_socket.recv(512) print "Message from server:", server_message -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: TCP_Server_GUI.py Type: text/x-python Size: 2936 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: tcpclient.py Type: text/x-python Size: 473 bytes Desc: not available URL: From mark at microenh.com Thu Mar 1 14:18:30 2012 From: mark at microenh.com (Mark E Erbaugh) Date: Thu, 1 Mar 2012 08:18:30 -0500 Subject: [CentralOH] How-To non-blocking GUI with Tkinter In-Reply-To: References: Message-ID: On Feb 29, 2012, at 10:38 PM, pybokeh wrote: > Hello, > I am new to GUI programming and threading in Tkinter and I am basically trying to create a chat or instant messaging program for fun or as a learning experience. The problem I am having is my while loop doesn't loop through due to the mainloop() function since it doesn't return to the main thread until the root is closed or exited. So what ends up happening is I can receive an instant message only once from the client, but server can send message ok and the client receives the message fine. I've been doing a lot of searching and it appears I need to either run a separate thread for the part of the program that is waiting for the data from the client. I've also looked at tkinter.createfilehandler(), but I just don't know how to implement this. Any help with this in terms of documentation or reference material would be greatly appreciated. Thanks in advance! > > - Daniel Daniel, If your checkdata() function blocks, you should run it in a separate thread. It it doesn't block, you can call checkdata() within the main loop, by calling widget methods after() or after_idle(). after() will call its callback (checkdata) after approximately the specified number of seconds. after_idle() will call it's callback when the event loop is empty. Either method only calls its callback once, so the callback method needs to reload itself with another call to after() or after_idle(). Mark From jep200404 at columbus.rr.com Sun Mar 11 23:37:17 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Sun, 11 Mar 2012 18:37:17 -0400 Subject: [CentralOH] Indicating Meaning of Items of Return Values Message-ID: <20120311183717.548f4038.jep200404@columbus.rr.com> How do you indicate _meaning_? When returning multiple things such as in a tuple or list from a function or method, what are good ways of referring to the individual items that convey _meaning? For example, the indexes of bar leave no clue as to what its items mean in the following code. def foo(): ... return search, holy, grail def main(): bar = foo() # The indexes of bar give no clue as to meaning. snafu = bar[0] * bar[1] + bar[2] I am playing with the following to indicate meaning. # Indexes for return values are: (SEARCH, HOLY, GRAIL) = range(3) def foo(): ... return search, holy, grail def main(): bar = foo() snafu = bar[SEARCH] * bar[HOLY] + bar[GRAIL] What are better ways of conveying meaning? The normal way of returning things is with a tuple, of which the items are accessed by numerical index. Should I return a dictionary as follows? That seems too much. def foo(): ... return {"SEARCH": search, "HOLY": holy, "GRAIL": grail} def main(): bar = foo() snafu = bar{"SEARCH"} * bar{"HOLY"} + bar{"GRAIL"} How do you indicate _meaning_? From mark at microenh.com Sun Mar 11 23:44:10 2012 From: mark at microenh.com (Mark E Erbaugh) Date: Sun, 11 Mar 2012 18:44:10 -0400 Subject: [CentralOH] Indicating Meaning of Items of Return Values In-Reply-To: <20120311183717.548f4038.jep200404@columbus.rr.com> References: <20120311183717.548f4038.jep200404@columbus.rr.com> Message-ID: <30AB2885-1E9A-428E-A911-45595A6A5BC3@microenh.com> On Mar 11, 2012, at 6:37 PM, jep200404 at columbus.rr.com wrote: > How do you indicate _meaning_? > > When returning multiple things such as in a tuple or list > from a function or method, what are good ways of referring to the > individual items that convey _meaning? > > For example, the indexes of bar leave no clue as to what > its items mean in the following code. > > def foo(): > ... > return search, holy, grail > > def main(): > bar = foo() > > # The indexes of bar give no clue as to meaning. > snafu = bar[0] * bar[1] + bar[2] > > I am playing with the following to indicate meaning. > > # Indexes for return values are: > (SEARCH, HOLY, GRAIL) = range(3) > def foo(): > ... > return search, holy, grail > > def main(): > bar = foo() > > snafu = bar[SEARCH] * bar[HOLY] + bar[GRAIL] > > What are better ways of conveying meaning? > The normal way of returning things is with a tuple, > of which the items are accessed by numerical index. > Should I return a dictionary as follows? > That seems too much. > > def foo(): > ... > return {"SEARCH": search, "HOLY": holy, "GRAIL": grail} > > def main(): > bar = foo() > > snafu = bar{"SEARCH"} * bar{"HOLY"} + bar{"GRAIL"} > > How do you indicate _meaning_? How about: search,holy,grail = foo() ? From steven.huwig at gmail.com Sun Mar 11 23:48:52 2012 From: steven.huwig at gmail.com (Steven Huwig) Date: Sun, 11 Mar 2012 18:48:52 -0400 Subject: [CentralOH] Indicating Meaning of Items of Return Values In-Reply-To: <20120311183717.548f4038.jep200404@columbus.rr.com> References: <20120311183717.548f4038.jep200404@columbus.rr.com> Message-ID: <5E99AE37-F1BD-4135-B5DB-D6CD676B6868@gmail.com> Describe the return values separately in a docstring for the method or function. def foo(): """Returns (search, holy, grail), where search is...""" ... return search, holy, grail On Mar 11, 2012, at 6:37 PM, jep200404 at columbus.rr.com wrote: > How do you indicate _meaning_? > > When returning multiple things such as in a tuple or list > from a function or method, what are good ways of referring to the > individual items that convey _meaning? > > For example, the indexes of bar leave no clue as to what > its items mean in the following code. > > def foo(): > ... > return search, holy, grail > > def main(): > bar = foo() > > # The indexes of bar give no clue as to meaning. > snafu = bar[0] * bar[1] + bar[2] > > I am playing with the following to indicate meaning. > > # Indexes for return values are: > (SEARCH, HOLY, GRAIL) = range(3) > def foo(): > ... > return search, holy, grail > > def main(): > bar = foo() > > snafu = bar[SEARCH] * bar[HOLY] + bar[GRAIL] > > What are better ways of conveying meaning? > The normal way of returning things is with a tuple, > of which the items are accessed by numerical index. > Should I return a dictionary as follows? > That seems too much. > > def foo(): > ... > return {"SEARCH": search, "HOLY": holy, "GRAIL": grail} > > def main(): > bar = foo() > > snafu = bar{"SEARCH"} * bar{"HOLY"} + bar{"GRAIL"} > > How do you indicate _meaning_? > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh From brandon at rhodesmill.org Sun Mar 11 23:55:17 2012 From: brandon at rhodesmill.org (Brandon Craig Rhodes) Date: Sun, 11 Mar 2012 18:55:17 -0400 Subject: [CentralOH] Indicating Meaning of Items of Return Values In-Reply-To: <20120311183717.548f4038.jep200404@columbus.rr.com> (jep's message of "Sun, 11 Mar 2012 18:37:17 -0400") References: <20120311183717.548f4038.jep200404@columbus.rr.com> Message-ID: <87k42qg33e.fsf@asaph.rhodesmill.org> jep200404 at columbus.rr.com writes: > How do you indicate _meaning_? When returning multiple things such as > in a tuple or list from a function or method, what are good ways of > referring to the individual items that convey _meaning? The usual way would be to return an object. class GrailSearchResult(object): """...""" def foo(): r = GrailSearchResult() r.search = ... r.holy = ... r.grail = ... return r But if the "usual Python way" of representing a compound value seems too heavyweight, the "collections.namedtuple" type supports objects that all have the exact same set of attributes. It is implemented as a tuple whose members can also be accessed by attribute names like ".holy" and ".grail" but which is stored as a compact read-only tuple. -- Brandon Craig Rhodes brandon at rhodesmill.org http://rhodesmill.org/brandon From winningham at gmail.com Mon Mar 12 01:18:08 2012 From: winningham at gmail.com (Thomas Winningham) Date: Sun, 11 Mar 2012 20:18:08 -0400 Subject: [CentralOH] Indicating Meaning of Items of Return Values In-Reply-To: <87k42qg33e.fsf@asaph.rhodesmill.org> References: <20120311183717.548f4038.jep200404@columbus.rr.com> <87k42qg33e.fsf@asaph.rhodesmill.org> Message-ID: i really like brandon's idea of an empty class with overloaded fields. there's also of course returning a dict although that'll be more verbose {"search": "name", "holy": "is", "grail": "tim?"} to access but would be descriptive perhaps, especially in the repl. mark's the best way to break it out, these dicts will be unordered unless you use the new ordered dict. On Sun, Mar 11, 2012 at 6:55 PM, Brandon Craig Rhodes wrote: > jep200404 at columbus.rr.com writes: > >> How do you indicate _meaning_? ?When returning multiple things such as >> in a tuple or list from a function or method, what are good ways of >> referring to the individual items that convey _meaning? > > The usual way would be to return an object. > > ? ?class GrailSearchResult(object): > ? ? ? ?"""...""" > > ? ?def foo(): > ? ? ? ?r = GrailSearchResult() > ? ? ? ?r.search = ... > ? ? ? ?r.holy = ... > ? ? ? ?r.grail = ... > ? ? ? ?return r > > But if the "usual Python way" of representing a compound value seems too > heavyweight, the "collections.namedtuple" type supports objects that all > have the exact same set of attributes. ?It is implemented as a tuple > whose members can also be accessed by attribute names like ".holy" and > ".grail" but which is stored as a compact read-only tuple. > > -- > Brandon Craig Rhodes ? brandon at rhodesmill.org ? http://rhodesmill.org/brandon > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh From jep200404 at columbus.rr.com Mon Mar 12 14:54:45 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 12 Mar 2012 09:54:45 -0400 Subject: [CentralOH] Indicating Meaning of Items of Return Values In-Reply-To: <87k42qg33e.fsf@asaph.rhodesmill.org> References: <20120311183717.548f4038.jep200404@columbus.rr.com> <87k42qg33e.fsf@asaph.rhodesmill.org> Message-ID: <20120312095445.3e2c8477.jep200404@columbus.rr.com> On Sun, 11 Mar 2012 18:44:10 -0400, Mark E Erbaugh wrote: > On Mar 11, 2012, at 6:37 PM, jep200404 at columbus.rr.com wrote: > > How do you indicate _meaning_? > How about: > > search,holy,grail = foo() Thanks. That answers the question I asked. Unfortunately, I oversimplified my example. Those tuples get stored in containers of containers. When accessing those tuples later, names no longer apply. On Sun, 11 Mar 2012 18:55:17 -0400, Brandon Craig Rhodes wrote: > jep200404 at columbus.rr.com writes: > > > How do you indicate _meaning_? When returning multiple things such as > > in a tuple or list from a function or method, what are good ways of > > referring to the individual items that convey _meaning? > > The usual way would be to return an object. > > class GrailSearchResult(object): > """...""" > > def foo(): > r = GrailSearchResult() > r.search = ... > r.holy = ... > r.grail = ... > return r > > But if the "usual Python way" of representing a compound value seems too > heavyweight, the "collections.namedtuple" type supports objects that all > have the exact same set of attributes. Thanks. Those are more like I was thinking about (but failed to ask a better question for). The namedtuple looks interesting, much like structs in C. Python's libraries continue to impress. From jep200404 at columbus.rr.com Thu Mar 15 23:37:30 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Thu, 15 Mar 2012 18:37:30 -0400 Subject: [CentralOH] Rick Harding's SQLAlchemy Tutorial Video Message-ID: <20120315183730.1e60fe17.jep200404@columbus.rr.com> What is a good URL for Rick Harding's SQLAlchemy tutorial video at 2011 PyOhio? http://blip.tv/pyohio/sqlalchemy-tutorial-5442205 is not happy. https://github.com/mitechie/sqlalchemy_pyohio2011 is happy, but does not have video. From eric at intellovations.com Thu Mar 15 23:54:20 2012 From: eric at intellovations.com (Eric Floehr) Date: Thu, 15 Mar 2012 18:54:20 -0400 Subject: [CentralOH] Rick Harding's SQLAlchemy Tutorial Video In-Reply-To: <20120315183730.1e60fe17.jep200404@columbus.rr.com> References: <20120315183730.1e60fe17.jep200404@columbus.rr.com> Message-ID: pyvideo.org is the new official home of Python videos... try this: http://pyvideo.org/video/525/pyohio-2011--sqlalchemy-tutorial -Eric On Thu, Mar 15, 2012 at 6:37 PM, wrote: > What is a good URL for Rick Harding's SQLAlchemy tutorial video > at 2011 PyOhio? > > http://blip.tv/pyohio/sqlalchemy-tutorial-5442205 is not happy. > > https://github.com/mitechie/sqlalchemy_pyohio2011 is happy, > but does not have video. > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Fri Mar 16 00:43:03 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Thu, 15 Mar 2012 19:43:03 -0400 Subject: [CentralOH] Rick Harding's SQLAlchemy Tutorial Video In-Reply-To: References: <20120315183730.1e60fe17.jep200404@columbus.rr.com> Message-ID: <20120315194303.6986191c.jep200404@columbus.rr.com> On Thu, 15 Mar 2012 18:54:20 -0400, Eric Floehr wrote: > pyvideo.org is the new official home of Python videos... try this: > > http://pyvideo.org/video/525/pyohio-2011--sqlalchemy-tutorial Thanks, that works. Even better, the video is in ogg theora format. Who did that? From eric at intellovations.com Fri Mar 16 14:46:10 2012 From: eric at intellovations.com (Eric Floehr) Date: Fri, 16 Mar 2012 09:46:10 -0400 Subject: [CentralOH] Rick Harding's SQLAlchemy Tutorial Video In-Reply-To: <20120315194303.6986191c.jep200404@columbus.rr.com> References: <20120315183730.1e60fe17.jep200404@columbus.rr.com> <20120315194303.6986191c.jep200404@columbus.rr.com> Message-ID: Jim, Thanks, that works. Even better, the video is in ogg theora format. > Who did that? > No problem... I think Carl probably recorded and edited it in that format on Linux, and then just uploaded to blip.tv that way. Blip.tv must store the original, or maybe blip.tv uses ogv format itself. -Eric -------------- next part -------------- An HTML attachment was scrubbed... URL: From jep200404 at columbus.rr.com Mon Mar 26 16:50:08 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 26 Mar 2012 10:50:08 -0400 Subject: [CentralOH] Documenting Database Structure Message-ID: <20120326105008.6d05984f.jep200404@columbus.rr.com> How is the structure of a database typically documented? with the (SQL) commands used to create the database? graphic visualization? From winningham at gmail.com Mon Mar 26 16:58:20 2012 From: winningham at gmail.com (Thomas Winningham) Date: Mon, 26 Mar 2012 10:58:20 -0400 Subject: [CentralOH] Documenting Database Structure In-Reply-To: <20120326105008.6d05984f.jep200404@columbus.rr.com> References: <20120326105008.6d05984f.jep200404@columbus.rr.com> Message-ID: I have seen: 1. Narratives, with tables of the metadata of the tables, and some descriptions of keys and how they are linked. 2. Erwin or UML style graphs or block diagrams (most popular, and most useful maybe for understanding) lot of ways to make these. 3. Create statements like you say, in a file, these are exported usually from most RDBMS servers with a command. 4. Auditors (for some reason) like screen shots of visual layouts within client applications, and some kind of narrative mix. On Mon, Mar 26, 2012 at 10:50 AM, wrote: > How is the structure of a database typically documented? > > with the (SQL) commands used to create the database? > graphic visualization? > > _______________________________________________ > CentralOH mailing list > CentralOH at python.org > http://mail.python.org/mailman/listinfo/centraloh From jep200404 at columbus.rr.com Mon Mar 26 19:45:08 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 26 Mar 2012 13:45:08 -0400 Subject: [CentralOH] Meeting Reminder Message-ID: <20120326134508.313be1da.jep200404@columbus.rr.com> Meeting Tonight See cohpy.org for details. From jep200404 at columbus.rr.com Mon Mar 26 14:13:53 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 26 Mar 2012 08:13:53 -0400 Subject: [CentralOH] Meeting Reminder Message-ID: <20120326081353.2d603824.jep200404@columbus.rr.com> Meeting Tonight Central Ohio Python User Group See cohpy.org for details. From gjigsaw at gmail.com Tue Mar 27 02:13:13 2012 From: gjigsaw at gmail.com (Jason Green) Date: Mon, 26 Mar 2012 20:13:13 -0400 Subject: [CentralOH] Four Fours Message-ID: As I mentioned briefly this evening, a math-teacher friend shared the game four-fours with me as a way to kill time on a road trip. Having quickly tired of playing it "honestly" in my head, I pulled my laptop out of the backseat and pointed python at the problem. I've attached the eventual result. Please feel free to comment and correct as you wish. Cheers, -Jason PS: I recently found that wikipedia has an entry on the game here . -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ff.py Type: application/octet-stream Size: 10509 bytes Desc: not available URL: From jep200404 at columbus.rr.com Tue Mar 27 05:06:41 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 26 Mar 2012 23:06:41 -0400 Subject: [CentralOH] 2012-03-26 Meeting Scribbles Message-ID: <20120326230641.20b6194f.jep200404@columbus.rr.com> Pyohio is coming July 28-29 2012 http://pyohio.org/ Drew Brown gave a presentation about Python and Arduino http://en.wikipedia.org/wiki/Arduino http://www.arduino.cc/ http://www.arduino.cc/playground/Interfacing/Firmata http://www.microcenter.com/ search for Arduino Arduino and similar electronics stuff is to West of service counter at Bethel Rd store https://bitbucket.org/tino/pyfirmata/overview http://firmata.org/wiki/Main_Page http://thefusefactory.org/ Alison(sp?) Shawn Ferguson(sp?) http://www.raspberrypi.org/ http://www.sparkfun.com/ http://en.wikipedia.org/wiki/Limor_Fried http://www.ladyada.net/ http://www.adafruit.com Lack of library support limits Python 3 http://python3wos.appspot.com/ http://pypi.python.org/pypi/South Raymond Chandler extolled the virtues of going South. (Ray, please elaborate) Kevin Roach is trying to put together a local Arduino group (adigital1 at sbcglobal.com?) http://www.meetup.com/Central-Ohio-Python-Users-Group/members/35472952/ Facebook some expressed that some avoid Facebook, thereby limiting oneself Eric Floehr espoused the virtues and hassles of xmonad and two mad dogs. http://twomaddogs.com/ (Powell, not Dublin) xmonad http://xmonad.org/ https://en.wikipedia.org/wiki/Xmonad lxrandr http://en.wikipedia.org/wiki/Tmux PEP 8 class name capitalization http://www.python.org/dev/peps/pep-0008/#class-names constant name capitalization http://www.python.org/dev/peps/pep-0008/#constants http://dir.xiph.org/by_format/Ogg_Vorbis From jep200404 at columbus.rr.com Tue Mar 27 05:50:05 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 26 Mar 2012 23:50:05 -0400 Subject: [CentralOH] 2012-03-26 Meeting Scribbles In-Reply-To: <20120326230641.20b6194f.jep200404@columbus.rr.com> References: <20120326230641.20b6194f.jep200404@columbus.rr.com> Message-ID: <20120326235005.2da3c2d0.jep200404@columbus.rr.com> On Mon, 26 Mar 2012 23:06:41 -0400, jep200404 at columbus.rr.com wrote: > Kevin Roach is trying to put together a local Arduino group > (adigital1 at sbcglobal.com?) adigitaldj1 at sbcglobal.net? From jep200404 at columbus.rr.com Tue Mar 27 05:53:46 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 26 Mar 2012 23:53:46 -0400 Subject: [CentralOH] 2012-03-26 Meeting Scribbles In-Reply-To: <20120326230641.20b6194f.jep200404@columbus.rr.com> References: <20120326230641.20b6194f.jep200404@columbus.rr.com> Message-ID: <20120326235346.0da532c7.jep200404@columbus.rr.com> Keyboard links: http://pckeyboards.stores.yahoo.net/en104wh.html http://pckeyboards.stores.yahoo.net/linux101.html http://www.clickykeyboards.com/index.cfm http://pckeyboards.stores.yahoo.net/ http://www.clickykeyboards.com/index.cfm/fa/categories.main/parentcat/9244 http://www.renoise.com/blog/crippled-chords-without-full-n-key-rollover/ From jep200404 at columbus.rr.com Tue Mar 27 05:55:24 2012 From: jep200404 at columbus.rr.com (jep200404 at columbus.rr.com) Date: Mon, 26 Mar 2012 23:55:24 -0400 Subject: [CentralOH] 2012-03-26 Meeting Scribbles In-Reply-To: <20120326230641.20b6194f.jep200404@columbus.rr.com> References: <20120326230641.20b6194f.jep200404@columbus.rr.com> Message-ID: <20120326235524.207f4b7d.jep200404@columbus.rr.com> http://qtile.org/ From lhowell at speakeasy.net Tue Mar 27 15:16:33 2012 From: lhowell at speakeasy.net (Larry Howell) Date: Tue, 27 Mar 2012 09:16:33 -0400 Subject: [CentralOH] more Arduino stuff Message-ID: <4F71BDB1.3030204@speakeasy.net> The OSU Open Source Club meeting Thursday evening has a presentation on Arduino hardware. Their meeting announcement hit my inbox this morning: http://mail.cse.ohio-state.edu/pipermail/opensource-announce/2012-March/000219.html Several people's comments at our meeting last night expressed an interest in Arduino hardware, so I thought the opensource meeting may be of interest to them. Larry