<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10337763</id><updated>2011-04-21T17:35:43.371-04:00</updated><title type='text'>Geekin'...</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10337763.post-110899047711074646</id><published>2005-02-21T07:50:00.000-05:00</published><updated>2005-02-21T07:54:37.116-05:00</updated><title type='text'>02 20 2005, Sunday</title><content type='html'>It's been a while. For the last week I haven't been as active as normal doing tech stuff, but I made up for it today (Sunday, as I'm writing).&lt;br /&gt;&lt;br /&gt;Umm, let's see... to catch up:&lt;br /&gt;&lt;br /&gt;Still no luck getting the iPod to work. I ran into difficulties installing Window$ Service Packs and once I finally figured out how to resolve my problem (with my brother's help) and get SP1 installed (because I was offline and no longer had SP2 downloaded), Windows refuses to boot. It gets to the "Windows was not properly shut down" screen where I can choose Safe Mode, Last Known Good, etc and none work -- all cause an immediate reboot. There's a BSOD for a fraction of a second, not long enough to read. I'm actually not too concerned about this, since I'm sure I can get things working again with a boot disk. I haven't even looked for one yet because I've been so busy with linux stuff.&lt;br /&gt;&lt;br /&gt;On to that -- I had to fight tooth and nail to get get a new version of glib installed on onyx. I had 1.2.10 and 2.2.2 installed, and gtkpod (linux ipod software; supposedly works with the Shuffle) required gtk+ 2.4 or better. Well, gtk+ required glib 2.4 and pango and atk, but glib had to be installed before pango and atk.... etc. It was a big mess of software, and none of it installed right on first attempt. The problem was that the default install location when building glib from source is /usr/local, but my original Slackware installation came with glib installed to /usr. So even though glib installed just fine, gtkpod and the other programs kept giving errors that my glib was out of date, because they were finding the original glib in /usr. I tried to change where pkg-config looked for glib which fooled most of the ./configures but wouldn't actually work. I also tried to screw with my /etc/ld.so.conf, my $LD_LIBRARY_PATH, etc. Nothing worked, and I couldn't at first figure out why. Finally I randomly realized what was happening, 'make uninstall'ed and 'make clean'ed all the attempted installs and tried again with ./configure --prefix=/usr and it all worked.&lt;br /&gt;&lt;br /&gt;...to no avail with gtkpod. Oh, it configured, made, and installed, but because the iPod isn't formatted yet gtkpod doesn't know where to put/how to store songs on it so I can play them. At least the program can see the Shuffle and move files to it. I'm optimistic that once I (FINALLY!) format it, I'll be able to use the iPod Shuffle with linux.&lt;br /&gt;&lt;br /&gt;I thought that once I gave up on the iPod for a while I'd be done fscking with glib. This wasn't the case. In a bit of downtime this morning while I was waiting on ethereal to recompile (more on that later), I hacked the xmms source to add a function I've always wanted. Back in the day when Napster was young and desirable (not like now...), I used WinAmp for all my mp3 playing needs. WinAmp had a feature where you could press "Ctrl + V" which would stop playback at the end of the current track. I used to use it all the time (eg) as I was leaving my apartment so I wouldn't have to kill it midsong but I wouldn't have to leave it playing the whole time I was gone or modify my playlist manually. But xmms didn't (before now) have that capability.&lt;br /&gt;&lt;br /&gt;Ctrl + V is already bound in xmms, to Visualizations. But Shift + V isn't -- in the source it's commented out but it's supposed to be a 'stop with fade' function. I spent half an hour or so in the source (input.c, input.h, main.c, playlist.c, and plugin.h) and added the "stopnext" capability. I modeled it mostly on the input_pause() function and variables. I had to add a variable to InputPluginData which I wanted to avoid, but it's the Best Way of doing what I want to do. I suppose I could use a thread and sleep for the rest of the current track or wait for the next track to play(), but I don't know how to code that really at all. So this should work.&lt;br /&gt;&lt;br /&gt;I went to compile it and got a fscking glib error, saying it needs glib 1.2.2 or newer. I have 1.2.10 and 2.4.8, but in all my hacking around I hosed or buried my glib 1.2.10. I've been too busy with IAX and ethereal all day to try to sort it out. Perhaps tomorrow...&lt;br /&gt;&lt;br /&gt;Besides my half-hour jaunt into xmms-land (which was interesting -- all the "real" C I've read has been Mark Spencer's, and this wasn't. I definitely noticed differences in coding styles.), today was an IAX day. I re-configured all 3 of my machines (sigma, onyx, wrt) to each have 2 unique IAX friends -- the other 2 machines. Before I had the same iax username:password for all 3 machines, and that just wasn't working. I couldn't tell who was doing what easily. So now onyx registers to sigma as onyx-sigma:ospass and to wrt as onyx-wrt:owpass, sigma registers to onyx as sigma-onyx:sopass and to wrt as sigma-wrt:swpass, and wrt registers as wrt-onyx:wopass and wrt-sigma:wspass. This makes my life far easier.&lt;br /&gt;&lt;br /&gt;I have some funniness going on with the wrt. It doesn't register or allow registrations from either sigma or onyx. Not sure what that's about, as other traffic (web, ssh, icmp) works fine. I looked at the openwrt documentation I have cached on onyx and finally figured out how to permanently configure the essid (I was embarrassed to ever be running an access point with an essid of "linksys"). So now it's one everyone at school would recognize. : )   I think the registration difficulties may result from the preconfigured firewall on the wrt, which I haven't yet analyzed. I'll get there.&lt;br /&gt;&lt;br /&gt;I now feel I've got a pretty good handle on the basics of IAX implementation. I looked at several ethereal dumps of IAX calls and noticed right away that the ethereal dissectors are quite out of date. After all, they are almost 6 months old -- that's an eternity in asterisk-land. : )   They're actually so out of date that ethereal-0.10.8 segfaults on me whenever I try to look at an IAX2 packet of type NEW. None of the other packets I looked at caused segfaults, but not all of them were right. About 25 Information Elements (IEs) are new since July 2004, when the dissector was written. And several of them are now basic to any IAX call. I first noticed that ethereal was misreporting the IE for the HANGUP packet, saying it was unknown when it should have specified what the CAUSECODE was. The old method of reporting the hangup cause was as a string in IE_CAUSE; nowadays there's a lookup list in include/asterisk/causes.h and IE_CAUSECODE is used. So I hacked ethereal's dissector (packet-iax2.c and .h) to include the causes list in the header and to handle it appropriately in the code. I was pretty excited when it worked on my first attempt -- again, this was working in non-markster code and it was harder for me to parse.&lt;br /&gt;&lt;br /&gt;Later on I went back through and added code for all the "new" information elements. There are several of them that I have never seen in use and I didn't know what possible values would be for the ones of type string, so the updated dissector isn't as fleshed out as it could be. But it at least reports all the IEs I see properly. I'm going to look online when next I can to see if there's a newer version of ethereal, and if it includes a newer iax2 dissector. If it doesn't, perhaps I'll submit what I have for inclusion in the next release.&lt;br /&gt;&lt;br /&gt;I'll definitely submit it if I can fix the segfault when parsing NEW packets. I used gdb for the first time tonight to try to debug ethereal to locate the segfault. I found it at once after I figured out how to invoke and run gdb. I'm impressed by this program -- I wish I would have started using it sooner.&lt;br /&gt;&lt;br /&gt;I fired up ethereal in -X (hex + ascii) mode and literally hand parsed a few NEW packets to see in practice instead of in code what IEs they contain. That was a worthwhile and educational exercise. In just the half hour or so I was doing that I got to the point where I no longer had to reference notes or configs to read exactly what each packet said. I never thought I'd actually be able to "read" packets so quickly.&lt;br /&gt;&lt;br /&gt;I had decided last night that the best use of my time in learning IAX right now would be to shift from just reading code to watching calls on the wire (or air, as the case may be) and diagramming each step of call setup, registration, etc. I got an email from BC this morning saying that he wanted someone to help him create IAX call flow diagrams -- exactly what I had started working on 12 hours previously. So I spent a few hours today making a thorough and pretty (for ASCII...) CFD for an IAX setup. It's not quite as generic as I'd like it to be because I include the specific authentication packets I use, which aren't the only possible ones. But that's easily changed, when I get around to it. I also made a complete iax registration CFD. Both will hopefully be online soon.&lt;br /&gt;&lt;br /&gt;***Later...&lt;br /&gt;&lt;br /&gt;I got ethereal to parse and display NEW packets without segfaulting, merely by commenting some AST_DATAFORMAT stuff in packet-iax2.c. There's no such thing as AST_DATAFORMAT anymore so I don't think I'm breaking anything by doing this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110899047711074646?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110899047711074646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110899047711074646' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110899047711074646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110899047711074646'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/02/02-20-2005-sunday.html' title='02 20 2005, Sunday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110851509313846809</id><published>2005-02-15T19:45:00.000-05:00</published><updated>2005-02-15T19:51:33.146-05:00</updated><title type='text'>02 10 2005, Thursday</title><content type='html'>This was written on 02 10 2005, but not posted until 02 15 2005.&lt;br /&gt;&lt;br /&gt;Thus begins my first (likely of many) off-line blogging attempt. I'm on sigma in my dorm room in Charleston.&lt;br /&gt;&lt;br /&gt;I just got back from the computer lab here where I caught up on bugs and list posts. I already feel like I'm falling behind on asterisk current events because I can't check for updates more than once a day. : /&lt;br /&gt;&lt;br /&gt;I'm continuing to try to setup a VOIP solution for a friend studying abroad in England. She is enthralled by the idea of calling her family (in the same town as my college and the production asterisk server I have access to) over the Internet without having to pay the expensive inter national telephone rates. I think she's all setup now. I have her using iaxcomm 1.0 (or maybe .99pre11, if she didn't download the new release when I told her to) and dialing into the asterisk server at school. She has her own iax user and password, and the user's context field in the dialplan is such that she can only dial local calls on the Zap channels. I feel it's a pretty solid setup for her. Though I just now thought of something -- the dialplan only matches the dialout key followed by the local exchanges. It would be a simple matter to enable a "4-digit dial" setup for her by just prepending the dialout/exchange numbers to her input (I expect all the numbers she dials to be on just one exchange). While I'm at it, I could also add lines to properly handle the case when someone dials the area code before the 7 digit phone number, which it currently won't process.&lt;br /&gt;&lt;br /&gt;She has yet to make a successful call to the PSTN through iaxcomm. I've spoken with her via iax, but in TN where packet loss made my call quality unuseable. Today she couldn't get it to work because she was dialing the wrong number. A miscommunication between us made her think she had to dial "1 digit dialout + 3 digit exchange + 3 digit exchange + 4 digit rest of number" (she was dialing the exchange twice). It was an honest mistake, since she's new to dialplans and asterisk in general. I think it's hard for people at first to accept that they can dial the same exact "phone number" from a VOIP system to connect to a PSTN phone line. Anyway, the call passed on the Zap channel to the PSTN when she was dialing before was "exchange + exchange + last 4" (I forget what the last 4 digits of a phone number is called). She was getting a "call disconnected by remote" error, which was probably occurring after the PSTN hung up on her. For fun I dialed that same number on my cell tonight on the walk back from the computer lab (first prepending the area code in my case, so I would essentially be dialing the "same number"). I got an automated telco recording saying, "The number or code you've dialed is incorrect. Please check the number or code and try again. Message 266 7." The system said this twice and then hung up on me. I can't be certain if the disconnect she was notified of occurred after this message was played or right after the Zap channel was created. I don't think she heard any audio (eg from the telco recording) but I'm not positive of that. I also don't remember how long the CDR said her call attempts lasted (the recording is 30 seconds long). I wish I could watch the CLI as she made one of these calls!!&lt;br /&gt;&lt;br /&gt;Out of curiosity I also dialed "area code + 3 digit exchange + 3 digit exchange + 1st digit of last 4" to make a completely valid 10 digit call. I don't know enough about public telephony to know how extra digits are processed -- was my first call sent to this number with the extra d igits passed to the callee, or did the telco recognize that my dialstring was too long and immediately go to an error recording? After this test, I'm guessing the latter: I got ahold of a real person when dialing the "exch + exch + 1" number. I apologized for dialing a wrong number and hung up. So I know the recording wasn't reached because the "root number" was out of service. Interesting stuff. It's way funner to play with this stuff hands on before looking up the mechanics of it all online. I'm sure I could have googled to find out how a typical telco treats this case, but it's cooler to just try it and see. : )&lt;br /&gt;&lt;br /&gt;I thought of an interesting question Capouch could pose to his students currently studying voip. The dialplan on the asterisk server at SJC is configured such that pretty much any voip phone can dial out to the PSTN using the Zap hardware in the machine. Blake (or Tony, or someone) has a VRU setup so that on the non-voip Audix phone network on campus, anyone can dial a particular extension and get into the asterisk server to dial on the voip network. With the addition of a single line in the appropriate context, I could allow an Audix caller into the voiop network to be able to dial out via Zap onto the PSTN. With me so far? Now what if an Audix user dialed the VOIP network and then dialed out on the Zap line... back to the college's PSTN number into the audix line? One could dial from audix to voip to pstn to audix to voip... making a circle. For how many iterations could the circle run? (I know, but don't want to say yet because I think this is a good question for a class to see if they can reason it out. Not that anyone from that class likely reads this...). As a variation, one wouldn't have to use the localout PSTN to do this...really any point of egress from our asterisk server (fwd, sixtel, nufone, etc) to the world could call back in. But using zaptel and the local PSTN is free. : )&lt;br /&gt;&lt;br /&gt;I wonder what call quality would be like if one called (eg) from audix-&gt;SJC voip-&gt;fwd-&gt;SJC audix-&gt;SJC voip-&gt;sixtel-&gt;SJC audix-&gt;SJC voip-&gt;nufone-&gt;SJC audix-&gt;SJC voip-&gt;Zap localout-&gt;SJC audix. That would certainly be an interesting way to generate lots of load on one server. And I wonder how changing codecs would affect the whole setup (eg, if sixtel is configured for gsm but fwd and nufone are configured for ilbc there are already 2 translations being done on the audio). I'd love to try this and watch the CLI while doing so!!&lt;br /&gt;&lt;br /&gt;Alright, enough dialplan fun.&lt;br /&gt;&lt;br /&gt;I started browsing the iax channel driver last night and decided after 30 minutes or so that I really need to have more of a handle on the ast_frame struct and functions before getting too deep into iax. So that's now next on the agenda.&lt;br /&gt;&lt;br /&gt;I've begun making a list of words I think should be included in an 'asterisk glossary'. I haven't found the &lt;a href=http://voip-info.org&gt;wiki&lt;/a&gt; very effective in defining asterisk terms and instead of one at a time trying to add my own definitions of words to it, I hope to write a glossary of some of the terms I find most important. I'm coming at it from more of a developer (or at least administrator) point of view than a user POV. IE, I'm including words like trunk, bridge, frame, etc. that aren't of interest to an everyday user of asterisk. I think this is something that would be useful to the community, so I hope I don't get too sidetracked from it. It may also be helpful for BC's textbook, though that's a question for down the road that is independent of the original idea I had.&lt;br /&gt;&lt;br /&gt;I found 2 tiny typos/bugs in channel.c today, from working in the CLI. The function `help show channeltypes` returns the usage string for the function, and the string doesn't end with a newline. "registered" is also spelled "registred". Tiny tiny fixes, but perhaps another opportunity for me to say "Hey! Look at me!" and show people that I'm actively working with asterisk source. I'll patch it the next time I'm online. I could write it now, but I'd have to then worry about moving files around and re-diff'ing with updated CVS to get proper line numbers, etc. I'll just `cvs co asterisk` on "my" machine at school and write it then. The whole process should take just a few minutes.&lt;br /&gt;&lt;br /&gt;In other news, I'm really excited about google's new &lt;a href=http://maps.google.com&gt;mapping capability&lt;/a&gt;. It's quite impressive, and seems easier to use than &lt;a href=http://mapquest.com&gt;mapquest&lt;/a&gt;. I read part of a slashdot article tonight about someone's analysis of how it works, which was interesting. I also had fun with it myself, asking it to map "hell" for me. I wasn't aware of it, but apparently hell is somewhere near the Kansas/Oklahoma border. Who knew? : )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110851509313846809?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110851509313846809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110851509313846809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110851509313846809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110851509313846809'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/02/02-10-2005-thursday.html' title='02 10 2005, Thursday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110789834475109210</id><published>2005-02-08T15:37:00.000-05:00</published><updated>2005-02-08T16:32:24.753-05:00</updated><title type='text'>02 08 2005, Tuesday</title><content type='html'>Subtitle: Eww. Windows.&lt;br /&gt;&lt;br /&gt;I'm back in Charleston. I've figured out a way to get my machines connected to the Internet here, but I don't think I'm technically supposed to. I haven't asked because I don't want to hear "no". Plausible deniability, anybody? Anyway, I don't *need* them on for much of anything, so I'm not at that much of a loss. Once a week getting new asterisk CVS should suffice for awhile.&lt;br /&gt;&lt;br /&gt;What's new?&lt;br /&gt;&lt;br /&gt;I got my toys. The iPod Shuffle won't format on my WinXP laptop, which may be because it has a low-power low-speed USB port. I've ordered a USB 2.0 PC card from eBay which will hopefully fix the problem. Otherwise the Shuffle's going back to Apple.&lt;br /&gt;&lt;br /&gt;I also got the WRT Capouch/Blake sent. It's cool, but there isn't a whole lot I can really do with it. I don't have any hardphones and only onyx has a working soundcard (and can thus use a softphone). So I can really only make calls to the builtin asterisk demo context or using channel type local. Neither of those are all that exciting. But still... it's something. : )&lt;br /&gt;&lt;br /&gt;I got my "new" battery for onyx. It charged just fine but I haven't had a chance to take it off AC and see how long the battery lasts yet. I expect it to last a lot longer in Linux now than my last battery did because I have ACPI (more or less) working. At least, the components are all there. I don't have any alarm events set because I haven't learned the syntax yet. But if nothing else I could write a trivial perl script in 2 minutes to check the state of the battery and if it's lower than X to step the processor down. No worries.&lt;br /&gt;&lt;br /&gt;I finished reading through ~/asterisk/include/asterisk/channel.h which is mostly implemented by ~/asterisk/channel.c. I wouldn't say I 100% understand the ins and outs of every single function, but I definitely get the gist of all of it. I can say with some confidence that I understand how a channel works now. Reading code like that is fun because it affords numerous opportunities for new insights. I believe I'll be moving on to chan_iax2.c next, though I haven't decided for sure.&lt;br /&gt;&lt;br /&gt;Yesterday I called Sprint to have them activate the Vision service on my Samsung A500 phone. It's free for 2 months then $15 a month after. I don't consider that cheap, but for what it allows me to do I decided it's worth it. I already have gmail configured to auto-forward a copy of all mail to my Sprint PCS email address. So I can read any email sent to &lt;a href=mailto://kshumard@gmail.com&gt;kshumard@gmail.com&lt;/a&gt; more or less instantly on my cell phone. Pretty sweet.&lt;br /&gt;&lt;br /&gt;Today I explored online to find information about my phone. I found some really cool things. First I found an &lt;a href=http://www.mcdeb.com/MT/archives/000197.html&gt;old forum page&lt;/a&gt; with random posts about my phone, and some links. From there I found &lt;a href=http://3gcoding.com/archives/000015.php&gt;another site&lt;/a&gt; that gives some of the non-disclosed functions of the phone, eg error reports, browser info, and something called the 'field service menu'. That site also tells how to make the phone enter 'test mode' to try various phone functions. Perhaps the coolest, though, is the menu which displays the phone's actual public IP address. Unsurprisingly, it's not pingable. WHOIS tells me the address is Sprint owned and traceroute stops reporting 5 hops after the DNS entries include "sprintlink.net". Cool!!  Something I'm curious about is if all Sprint phones have a unique IP or if NATting or other fancy network stuff allows multiple phones to have the same IPs. I expect each phone gets its own, otherwise they'd use private IPs. But why don't they use private address space anyway? Maybe I should call and harrass Sprint tech support to see if I can get anything out of them. : )&lt;br /&gt;&lt;br /&gt;With a bit further research, I see that what I'm looking at on the phone isn't *my* IP address -- it's the address of the NGG or Next Generation Gateway. It's apparently the standard one, as many posts on cell phone forums online list the same IP I have. I still wonder why it's not a private address, though.&lt;br /&gt;&lt;br /&gt;One final interesting tidbit on the phone is that I can access the 'vocoder set' menu. It tells me that the current setting is 13K, but I can't change that without a 'service code' (password). I guess I've been curious in the back of my mind what codec(s) cell phones use to move voice... I've never bothered to actually look. Turns out the 'GSM' for 'Global System for Mobile communication' of cell phones is the same as the GSM codec I'm used to using in asterisk. Cool!  I found a &lt;a href=http://www.shoshin.uwaterloo.ca/~jscouria/GSM/index.html&gt;useful link&lt;/a&gt; of gsm information. Also very helpful in learning more about how cell phones work was the &lt;a href=http://electronics.howstuffworks.com/cell-phone1.htm&gt;howstuffworks.com cell phone&lt;/a&gt; article.&lt;br /&gt;&lt;br /&gt;So if I'm currently using GSM on my cell phone... I wonder if I could use speex or ilbc or some other codec? I wonder what other codecs are pre-installed. ??&lt;br /&gt;&lt;br /&gt;I'm off to play with asterisk some more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110789834475109210?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110789834475109210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110789834475109210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110789834475109210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110789834475109210'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/02/02-08-2005-tuesday.html' title='02 08 2005, Tuesday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110750351324642149</id><published>2005-02-04T02:37:00.000-05:00</published><updated>2005-02-04T02:51:53.246-05:00</updated><title type='text'>02 03 2005, Thursday</title><content type='html'>When abbreviated to 2 digits each, today's date is the sequence of the first 3 prime numbers.&lt;br /&gt;&lt;br /&gt;Same story as the last few days: more progress in channel.c, but not a whole lot and not much else. I should be able to do a lot tomorrow because I'll be in a car for 8 hours and sigma's laptop will hold out for quite awhile.&lt;br /&gt;&lt;br /&gt;I listed that skydiving rig on eBay for mom.&lt;br /&gt;&lt;br /&gt;I suspended the mailing of (digium) list digests to my gmail since it sends probably ~30 *digests* a day and that would be absolutely too much to handle after more than a day or two off of email. I stayed on -cvs since its output is less frequent (really it's -users that is so verbose) and more directly applicable to my endeavors.&lt;br /&gt;&lt;br /&gt;I got new CVS on both sigma and asterisk late tonight, since it's the last time I'll be able to get it for quite some time. I've been trying to figure out if there's an easy way to run CVS to a floppy that contains a list of the files/versions of my release, download the updated files to the floppy, and carry the floppy back to my off-net machines and patch that way. I don't think it's very feasible, unforch.&lt;br /&gt;&lt;br /&gt;I downloaded about 25 .ipk packages for the wrt, and another current CVS snapshot. BC says I only need (or he only uses) about 6 packages but they're all small so I got anything I could find that sounded mildly interesting or applicable.&lt;br /&gt;&lt;br /&gt;I got back from work today to find a random personal email from a CLEC in California looking to employ an asterisk/VOIP guru. They got my email from google hitting my blog. I was pretty excited to be approached cold about a job. I responded explaining my AmeriCorps commitments and forwarding a current copy of my resume.&lt;br /&gt;&lt;br /&gt;Shortly after that I read the 20+ asterisk list mails that had accumulated throughout the day, and found that the same company posted the job to the list. It sounds like they'll need a full-time on-site type person, so it's not really possible for me right now. But it's still cool to have been "found" for my abilities. : )&lt;br /&gt;&lt;br /&gt;I exported my bookmarks and saved them to some webspace I have. I also put &lt;a href=http://splurge.peoples-wireless.com/kennys2/kshumardresume.html&gt;my resume&lt;/a&gt; up on a website.&lt;br /&gt;&lt;br /&gt;I was being an idiot about my C switch/case/break question the other day. BC reminded me that you actually don't have to break a case at all; in fact a clever use of the language can be used to have multiple cases true. The break in the particular line of code I looked at is what Capouch calls "defensive programming" -- in case the return is ever changed to something else, the coder doesn't have to remember to add the break because it's already there.&lt;br /&gt;&lt;br /&gt;I won't be posting regularly for a while. It's been fun while it's lasted..... we'll see what the future holds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110750351324642149?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110750351324642149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110750351324642149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110750351324642149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110750351324642149'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/02/02-03-2005-thursday.html' title='02 03 2005, Thursday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110741254261801847</id><published>2005-02-03T01:15:00.000-05:00</published><updated>2005-02-03T01:35:42.616-05:00</updated><title type='text'>02 02 2005, Wednesday</title><content type='html'>I built 2 kernels today to get ACPI running on onyx. The first worked, but with everything as a module. And I somehow still didn't have the right (orinoco_cs) driver built. It should all work now, with shiny new kernel acpi plus orinoco_cs features. I haven't tested it yet cuz I just haven't gotten around to rebooting yet.&lt;br /&gt;&lt;br /&gt;I did some product research on eBay because a friend of my mother's wants me to sell his skydiving gear for him. I wrote up the listing and sent it to her to run it by him and offer advice/input on it before I actually list it.&lt;br /&gt;&lt;br /&gt;My Shuffle is waiting for me in Charleston. Hopefully we'll get back Friday in time for me to get it then. Otherwise I might have to wait til Monday (Nooooo!!!!!). : )    Value on eBay has already come down. I *may* be able to get $200 out of it, but that's not a large enough profit margin for it to be worth it to me. So I'll play with it and if I don't like it I can still sell it and prolly get 100% of my cash back.&lt;br /&gt;&lt;br /&gt;Since I built this 2.6 kernel a couple weeks ago to use my mouse as a native USB device (previously I was using a PS/2-USB adapter), my cursor "dances" on the screen sometimes. Or I'm tripping.&lt;br /&gt;&lt;br /&gt;Either gaim or aim now fail on me about once an hour. Maybe it's this network and it's awful connection, or maybe it's a bug in gaim somewhere. I suspect the network, but I dunno.&lt;br /&gt;&lt;br /&gt;People are talking about &lt;a href=http://bugs.digium.com/bug_view_page.php?bug_id=0003487&gt;overhauling voicemail&lt;/a&gt; in asterisk again. I'll believe it when I see it -- people have been talking for a long time about it. But I'm also a little bitter because I know how awesome that functionality would be, and it was posted as a "new feature" -- and when it's opened it's just a dialog about how to do it. Nobody's done it yet. Oh well.&lt;br /&gt;&lt;br /&gt;I went through more channel stuff today. Learning more and more as I go... again I didn't have much time to work on it and didn't make any really amazing leaps. No worries, though.&lt;br /&gt;&lt;br /&gt;I had an idea for a (relatively) simple asterisk documentation effort that would have lots of value -- a glossary. There are many terms in asterisk that are either just not straightforward at all or that on the surface may *seem* straightforward but really aren't. And even the straightforward terms could be included. Definitely I would included "channel", "frame", "native bridge", "trunk", "masquerade", etc on there.&lt;br /&gt;&lt;br /&gt;I helped Chris at SJC set up his IAXy today. That was really cool -- I've never played with an IAXy but I was able to guide him through the installation and configuration process for it on his wrt -- which I've also never laid eyes on. I got him up and running with relatively few problems. He can't do much useful yet because he has a fresh dialplan and doesn't know how to configure it, but I couldn't afford to spend more time helping him with that tonight.   Kinda cool that had he been a "customer" I contracted with, I could have made $100-$200 tonight.  : )&lt;br /&gt;&lt;br /&gt;I'm now downloading a bunch of .ipk files for the wrt before I go to bed.&lt;br /&gt;&lt;br /&gt;~K&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110741254261801847?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110741254261801847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110741254261801847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110741254261801847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110741254261801847'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/02/02-02-2005-wednesday.html' title='02 02 2005, Wednesday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110731602730213860</id><published>2005-02-01T21:58:00.000-05:00</published><updated>2005-02-02T00:22:06.736-05:00</updated><title type='text'>02 01 2005, Tuesday</title><content type='html'>Not much at all to report today. I did more reading of channel.c, but I didn't have a whole lot of time to play so I only got through another 5 or 10 functions. I'm getting there, though.&lt;br /&gt;&lt;br /&gt;I'm spending more and more time browsing ("processing" is closer) asterisk list mail. Not sure if that's good or bad, considering the time I have online, the sheer volume of mail, and how little of it actually applies/means anything to me.&lt;br /&gt;&lt;br /&gt;I played a little bit this evening with a forum system Blake setup. I'm too fried from work today to  focus on coding or anything.&lt;br /&gt;&lt;br /&gt;Oh, I did find something this morning I'd like to try out. &lt;a href=http://hts.ics.nitech.ac.jp/download.html&gt;Some website&lt;/a&gt; I found through google has a different festival voice than the standard ones you can download from the festival developers. I wanna give it a shot eventually, but I'm not sure I'll get the chance before I'm "dark" (offnet) again. : /&lt;br /&gt;&lt;br /&gt;*** Later ...&lt;br /&gt;&lt;br /&gt;So apparently I'm not going to bed as early as I had hoped/intended. Oh well -- I found some cool stuff.&lt;br /&gt;&lt;br /&gt;&lt;a href=http://www.skype.com&gt;Skype&lt;/a&gt; released versions for MacOS and &lt;a href=http://www.skype.com/products/skype/linux/&gt;linux&lt;/a&gt; today. I've downloaded but not installed; I doubt I'll be able to use it here but it may be nice to have. You never know. It's just a binary, not open source. Not surprising, but I'm still disappointed.&lt;br /&gt;&lt;br /&gt;I checked out that linke I have above for more festival voices. It referred me to &lt;a href=http://www.festvox.org/&gt;festvox.org&lt;/a&gt;, where you can &lt;a href=http://www.festvox.org/voicedemos.html&gt;hear speech synthesized&lt;/a&gt; by several different voices. You get to input the speech, too.&lt;br /&gt;&lt;br /&gt;The voices I liked best were &lt;a href=http://hts.ics.nitech.ac.jp/release/cmu_us_bdl_arctic_hts.tar.gz&gt;bdl_arctic_hts&lt;/a&gt; and &lt;a href=http://hts.ics.nitech.ac.jp/release/cmu_us_slt_arctic_hts.tar.gz&gt;slt_arctic_hts&lt;/a&gt;. I haven't installed either yet, but I downloaded them and maybe I'll get to play tomorrow. These voices sound much better than what I have; they're far less robotic-sounding.&lt;br /&gt;&lt;br /&gt;I googled for power management when running linux on a Presario 700 (onyx). I've never used apm or acpi on this machine because there has traditionally been no/poor support for it. 2.6 is supposed to be better; I'll recompile a kernel before I go dark (hopefully!!) and see how it works. I don't have any links; google turned up what I needed while I was on a windows computer so I didn't bother saving them. I can regoogle them.&lt;br /&gt;&lt;br /&gt;I wrote a simple C program tonight to test something I've been wondering about. At some point (perhaps ast_answer) of channel.c, there's a switch statement with an interesting bit of code. One of the cases has a break; statement immediately following a return statement. Obviously the break statement will never be reached, so I wasn't sure why it was there. My guess was that whiny/stupid compilers required every case: to end with a break; statement, even if they have another terminating command. So I coded &lt;a href=http://splurge.peoples-wireless.com/kennys/swret.c&gt; a simple program&lt;/a&gt; to see. I won't tell you what I found, do it yourself if you want to know. Or ask me. But I won't spoil it for anyone truly curious.&lt;br /&gt;&lt;br /&gt;I will say that I still hold my theory that whiny or stupid compilers require it. The gcc version on the machine I compiled on is 3.3.4. Behavior was the same when compiled with gcc 3.2.3.&lt;br /&gt;&lt;br /&gt;~K&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110731602730213860?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110731602730213860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110731602730213860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110731602730213860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110731602730213860'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/02/02-01-2005-tuesday.html' title='02 01 2005, Tuesday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110723608108854326</id><published>2005-01-31T22:53:00.000-05:00</published><updated>2005-02-01T00:34:41.090-05:00</updated><title type='text'>01 31 2005, Monday</title><content type='html'>Not actually a whole lot done today due to time constraints.&lt;br /&gt;&lt;br /&gt;I continued reading channel.c and got a lot further through it. Still only a small fraction of the way through, but there are 4000+ lines between the header and the actual file. Not much to actually report about it, except that it's going well.&lt;br /&gt;&lt;br /&gt;I had an idea last night of a way I could "check" my email without being anywhere near a computer. I could (in theory) configure a text-to-speech converter (tts) that converts text from my email to speech, and "read" them to me via asterisk. I had the idea last night and sent a quick mail to Capouch et al at SJC, and woke up to a suggestion from BC to look into &lt;a href=http://www.cepstral.com/&gt;cepstral&lt;/a&gt;, the "other" major speech engine. I've only used &lt;a href=http://www.cstr.ed.ac.uk/projects/festival/&gt;festival&lt;/a&gt; in the past, because it's free while cepstral is not. &lt;br /&gt;&lt;br /&gt;There are asterisk apps for both cepstral and festival, but neither allow you to specify a &lt;i&gt;file&lt;/i&gt; to speechify. Both only accept a string. Anyway, I installed the patch referenced in the &lt;a href=http://www.voip-info.org/wiki-Asterisk+Festival+installation&gt;voip-info festival page&lt;/a&gt;. After that I was able to use festival in its pre-programmed configuration through asterisk, ie it would say the string I had entered in the dialplan to me in speech. I couldn't for the life of me get it to say the contents of a file specified by that string, instead of the string itself. Festival plays files fine from the console, so all I need to do is get festival to understand that the string is a path and not what I want it to say.&lt;br /&gt;&lt;br /&gt;I spent a long time in festival.scm and tts.scm, the files that are altered by the diff needed to make festival work with asterisk. I tried a few things to get it to open a file, but it didn't work. I can't figure out where the actual (tts_file file mode) function is specified. The syntax of these files is totally foreign to me, but I'm starting to get the hang of it.&lt;br /&gt;&lt;br /&gt;I played a tiny bit with &lt;a href=http://www.gnu.org/software/gdb/gdb.html&gt;gdb&lt;/a&gt; to try to trace function calls as I use festival, but I've never used the program and there's a bit of a learning curve to make it do anything useful. Perhaps tomorrow.&lt;br /&gt;&lt;br /&gt;My patch was included in CVS HEAD today. Cool.&lt;br /&gt;&lt;br /&gt;Last night after I blogged but before I slept I did some eBayin'. I bought a battery for onyx for about $45 with shipping. The seller threw in the broken-but-repairable power adapter too. I also found a PCMCIA card with 2 Firewire ports on it for Dad, and had him buy it. Buy It Now was $3.30 and shipping/required insurance/etc was over $12. Bastards -- I hate shipping gougers. But I had no idea that Firewire PC cards were so cheap.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110723608108854326?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110723608108854326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110723608108854326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110723608108854326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110723608108854326'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-31-2005-monday.html' title='01 31 2005, Monday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110715016569869335</id><published>2005-01-30T23:22:00.000-05:00</published><updated>2005-01-31T00:42:45.696-05:00</updated><title type='text'>01 30 2005, Sunday</title><content type='html'>What all did I do today?&lt;br /&gt;&lt;br /&gt;I successfully moved the damnsmalllinux iso from moonlord to my /usr/src. 15 minutes for 50 MB over the web via ftp isn't stellar, but it got the job done. No worries.&lt;br /&gt;&lt;br /&gt;I downloaded all the docs for &lt;a href=http://openwrt.org/OpenWrtDocs/Installing&gt;installation&lt;/a&gt;, &lt;a href=http://openwrt.org/OpenWrtDocs/Configuration&gt;configuration&lt;/a&gt;, &lt;a href=http://openwrt.org/OpenWrtDocs/Troubleshooting&gt;troubleshooting&lt;/a&gt;, etc openwrt. I downloaded the &lt;a href=http://www.openwrt.org/cgi-bin/viewcvs.cgi/buildroot&gt;CVS source&lt;/a&gt; and the &lt;a href=http://openwrt.org/downloads/snapshots/&gt;daily snapshot&lt;/a&gt; of the firmware I need, too.&lt;br /&gt;&lt;br /&gt;I looked into astman and gastman today. Astman needs the libnewt library, and I have no idea what that is, and I couldn't find a tarball of it online. There were RPMs everywhere, but I prefer source to packages. So, no astman for me for now. Gastman, on the other hand, is a lot cooler than I remember. I got new CVS of it and got it going right away. All I had to configure was an entry in /etc/asterisk/manager.conf which wasn't hard at all. The interface is pretty sweet. You can see calls in progress, and transfer them, etc. It doesn't sound really special, but it really is cool to be able to do that independently of the cli or any actual phones -- especially remotely. I made a manager login for myself on moonlord and was able to login with my local gastman to the remote asterisk. That's probably the coolest feature of it.&lt;br /&gt;&lt;br /&gt;I installed the &lt;a href=http://bugs.digium.com/bug_view_advanced_page.php?bug_id=0002532&gt;iax jitter buffer&lt;/a&gt; on moonlord after doing some unscientific benchmarking by playing music on hold from moonlord through my console for 10 minutes while I did other stuff. I didn't notice much difference before and after when going through the console to a remote music on hold extension. iaxcomm seemed like it might be a little better, but it still wasn't good enough to make a 'real' call to the pstn. It occurred to me that the patch might not affect the calls I was making -- I was unclear if my actual audio was being sent as iax or as rtp. If rtp, the jitter buffer wouldn't apply because it's (so far) only coded into the iax channel. But a quick check in ethereal showed that my audio was iax encapsulated.&lt;br /&gt;&lt;br /&gt;Several hours after I installed the jitter buffer patch, I realized that I was using moonlord -- that finicky machine that doesn't always actually recompile the source you make. Dammit. I didn't have time to go back and screw with it more. Oh well. Perhaps another time...&lt;br /&gt;&lt;br /&gt;I spent some time configuring my blog. I just noticed today that I had a comment on one of my first posts a week ago; blogger doesn't by default tell you about comments and I hadn't thought to look for any manually. Sorry, Justin. I promise I wasn't ignoring you. : )&lt;br /&gt;&lt;br /&gt;&lt;a href=iaxclient.sourceforge.net/iaxcomm/index.html&gt;iaxcomm&lt;/a&gt; released a 1.0 release candidate today, that doesn't impress me. You still can't build the source, and the interface is even less intuitive than before. Unless I'm just an idiot, it doesn't tell you anywhere how to hangup a channel. I found by accident that you can cause a hangup by double-clicking a call. But seriously, I am not impressed with this. There's definitely a lot of potential there -- but it will be almost useless to me if I can't configure it and build it myself. Were I the developers, I would focus on the one task of making the source portable over absolutely all other concerns. My $0.02...&lt;br /&gt;&lt;br /&gt;I made a bunch of ethereal dumps of various iax events, including registration, making and receiving calls and hanging them up from both sides, etc. I saved them along with text commentary locally for offline perusal. Though I guess I could always recreate new ones with 2 laptops...   The ethereal filter system continues to baffle me. I was able to filter out other IP addresses, but it wouldn't let me filter on tcp ports. I'm positive I had the syntax right, though. Again, I could just be an idiot, but I don't really think so. No worries.&lt;br /&gt;&lt;br /&gt;I played in moonlord's extensions.conf a bit. I created an extension to playback the monkeys sound file I found yesterday. Then I played a bit more to make it accessible for audix users on the SJC phone network. This was done through a Goto, which I've never used in a dialplan but which was trivial to implement and understand. I didn't do anything remarkable or even exciting in the dialplan, but I felt like I was learning a lot and was really productive. It helped that I was explaining it all to Chris on AIM while I was doing it. That was cool. I also explained to Kurt today what CVS and how it works (sorta). I like teaching -- it's something I think I'm good at and I've gotten compliments from people on my ability to help them understand computer stuff. : )&lt;br /&gt;&lt;br /&gt;In a mail from Capouch he mentioned time constraints and something about "hard-coded 24-hour limit on each day". I was clever and replied that "It's not hardcoded... I checked. It's #define'd by an inline function with the rotational speed of the carrier as one of its args. And it's local to this planet struct anyway, you could always consider initializing another planet instance." I think I've been coding too much lately. : )&lt;br /&gt;&lt;br /&gt;I got thinking about it though, and looked up &lt;a href=http://www.astro-tom.com/time/24_hours.htm&gt;several&lt;/a&gt; &lt;a href=http://www.angelfire.com/tx5/blackdraxon/how_long_is_a_day.htm&gt;links&lt;/a&gt; about &lt;a href=http://image.gsfc.nasa.gov/poetry//ask/arot.html&gt;time&lt;/a&gt;. Did you know that we basically have a 24 hour day because Sumerians counted their knuckles instead of their fingers? 12 knuckles on a hand times 2 hands = 24 hours. Fascinating stuff.&lt;br /&gt;&lt;br /&gt;My &lt;a href=http://splurge.peoples-wireless.com/kennys/patches/chan_iax2.c.show_peer_complete.patch.txt&gt;latest patch&lt;/a&gt; was included in CVS-HEAD today. I'm still new enough to being an "active" OSS supporter that this is still exciting to me. : )&lt;br /&gt;&lt;br /&gt;I learned the difference today between a hangup and a soft hangup in asterisk. A hangup actually destroys a channel, handling stream stopping and other destruction functions. A soft hangup marks a channel for hangup but allows another thread to do the actual destruction. It's an important distinction that is obvious once seen but not so obvious before that. At least to me.&lt;br /&gt;&lt;br /&gt;I bummed around on &lt;a href=http://everything2.com/&gt;e2&lt;/a&gt; for a little bit today. I discovered something about the utility 'grep' I hadn't previously known: "The word originated with the ed editor, in which the command 'g/re/p', where 're' is a regular expression, would globally (that's the 'g') search for lines matching the regular expression in the file you were editing and print (that's the 'p') the results." Cool bit of trivia. Oh, here's the actual &lt;a href=http://everything2.com/index.pl?node_id=450843&gt;e2 node&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href=http://hackaday.com&gt;hackaday.com&lt;/a&gt; had an improved &lt;a href=http://hackaday.com/entry/1234000270029372/&gt;USB battery charger&lt;/a&gt; as today's entry. They did one last week but this one is cheaper, more efficient, and better looking. I'd love to build one of these. Why does nobody mass market something like this??&lt;br /&gt;&lt;br /&gt;I delved more into channel.c and channel.h today. I'm writing my summaries of what each function does as I go through them, and it's going really well. I'm understanding more of what I read in this file than in any other so far, which is doubly pleasing since this is the most complex file I've attempted to understand yet. I'm positive that the ease with which I'm understanding it is a result of increased familiarity with asterisk and C idioms.&lt;br /&gt;&lt;br /&gt;One chunk of code had me a bit confused for a bit, but I figured it out after 5 minutes or so of head scratching:&lt;br /&gt;&lt;br /&gt;&lt;snip from channel.c, near line 1990 of CVS-HEAD&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int ast_device_state(char *device)&lt;br /&gt;{&lt;br /&gt;        char tech[AST_MAX_EXTENSION] = "";&lt;br /&gt;        char *number;&lt;br /&gt;        struct chanlist *chanls;&lt;br /&gt;        int res = 0;&lt;br /&gt;&lt;br /&gt;        strncpy(tech, device, sizeof(tech)-1);&lt;br /&gt;        number = strchr(tech, '/');&lt;br /&gt;        if (!number) {&lt;br /&gt;            return AST_DEVICE_INVALID;&lt;br /&gt;        }&lt;br /&gt;        *number = 0;&lt;br /&gt;        number++;&lt;br /&gt;&lt;br /&gt;        ...&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/snip&gt;&lt;br /&gt;&lt;br /&gt;I didn't understand at first the 2 number operations after the if. Why set a pointer reference to 0 then increment the pointer itself? Finally it occurred to me that after the strchr, number was pointing to a string starting with '/'. But number just wants what's after that. So *number = 0 sets the '/' to 0 and steps the pointer forward to the first character after the '/' from the original string. Thus number contains a number (device is a dialstring like Zap1/2). Further, the *number = 0 also terminates the tech pointer so it now points to just the part of the string before the '/'. Elegant programming. I dig.&lt;br /&gt;&lt;br /&gt;I'm starting to think of crazy ideas to get net access once we leave here and I won't have a persistent net connection. I'm thinking of ways to manually set up a modem system with my cell phone so that I can echo tones into it at a high speed and have a computer at SJC interpret them and talk balk to me. But I'm sure that'd be ridiculously hard to set up. A bit more feasible would be creating a VRU that I program ahead of time with some default behaviors (eg "press '1' to have your email read to you with festival, press '2' to hear the latest slashdot article, press '3' to hear the newest bug on bugs.digium.com"). That would be totally awesome and not necessarily really hard. I'll have to think more about that....&lt;br /&gt;&lt;br /&gt;Until then, I'm gonna try to buy a battery for onyx on eBay. G'night.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110715016569869335?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110715016569869335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110715016569869335' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110715016569869335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110715016569869335'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-30-2005-sunday.html' title='01 30 2005, Sunday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110708039350074729</id><published>2005-01-30T04:02:00.000-05:00</published><updated>2005-01-30T05:25:57.786-05:00</updated><title type='text'>01 29 2005, Saturday</title><content type='html'>Total tech day. I slept in til 130 (*VERY* refreshing after working so hard this week at both my "jobs"), then did tech stuff more or less nonstop for the following 14 hours.&lt;br /&gt;&lt;br /&gt;I downloaded over a dozen rfcs from &lt;a href="http://rfc-editor.org/"&gt;rfc-editor.org&lt;/a&gt;, so that I have important &lt;a href="ftp://ftp.rfc-editor.org/in-notes/rfc3261.txt"&gt;SIP&lt;/a&gt;, &lt;a href="ftp://ftp.rfc-editor.org/in-notes/rfc3550.txt"&gt;RTP&lt;/a&gt;, and "how to write an rfc" documentation on local machines. I also downloaded xml2rfc on both sigma and onyx, and installed &lt;a href="http://www.tcl.tk/software/tcltk/downloadnow84.tml"&gt;tcl/tk 8.4.9&lt;/a&gt; on sigma, who had neither. I finally got around to installing &lt;a href="http://www.foolabs.com/xpdf/download.html"&gt;xpdf&lt;/a&gt; (for pdftotext since I seldom run X on sigma).&lt;br /&gt;&lt;br /&gt;This bizarre network (I haven't mentioned that in this blog -- DHCP-assigned IPs are in the 42/8 address space, which is IANA un-assigned. I'm online but in a black hole) was running slowly all evening, and for over an hour I couldn't do anything online at all. So I took the time to clean up onyx's filesystem, which was in desperate need of it. I rm'd a bunch of source I don't need/want anymore, and cleaned up my music collection (of 2200+ mp3s) a lot. I had music in probably 15 or 20 different places scattered across the drive, and now it's (somewhat) consolidated into only 4 or 5. And I got rid of almost 100 duplicate files. I wrote a quick perl hashing script to take the output of "locate -i mp3|grep home" (all my tunes are in /home) and make a hash with the filename (no path) as the key and the absolute filename (with path) as the value. Then I sorted it and printed it, so I could see if I had the same song filenames in different locations on the filesystem (which was true for dozens of files).&lt;br /&gt;&lt;br /&gt;I also cleaned up the fs by collecting all my generic code in one place, my patches in another, my other asterisk stuff in another, etc. It's just organized better now. I now have 1.5 GB free on the disk; before I had under 300 MB and thinks were looking grim.&lt;br /&gt;&lt;br /&gt;I subscribed to &lt;a href="http://lists.digium.com/mailman/listinfo/asterisk-biz"&gt;asterisk-biz&lt;/a&gt;, &lt;a href="http://lists.digium.com/mailman/listinfo/asterisk-dev"&gt;asterisk-dev&lt;/a&gt;, and &lt;a href="http://lists.digium.com/mailman/listinfo/asterisk-users"&gt;asterisk-users&lt;/a&gt; today. I didn't want to because of the volume of mail on them, but I decided a ton of mail isn't the worst thing in the world to have.&lt;br /&gt;&lt;br /&gt;I installed &lt;a href="http://gaim.sourceforge.net/"&gt;gaim&lt;/a&gt; 1.1.2; I was 2 minor versions old. Gaim is impressing me less and less lately... It's pretty clunky and the make on my (average) hardware took 20 minutes. Perhaps it's nearly time to explore other aim clients.&lt;br /&gt;&lt;br /&gt;I talked to Erin on IM for a while before the network decided we were done talking. She's still really curious and interested in learning linux, so I was explaining more to her. I described window managers and desktop environments, then the process to go from human-typed commands to 0s and 1s that a computer understands. I explained how ascii works, too, and showed her &lt;a href="http://www.theskull.com/javascript/ascii-binary.html"&gt;a site&lt;/a&gt; that does ascii-binary conversion that Kurt found for me. I need to try to remember to ask Blake to burn me a &lt;a href="http://knoppix.org/"&gt;knoppix&lt;/a&gt; CD to send Erin for her to use to start actually playing with linux.&lt;br /&gt;&lt;br /&gt;I moved the location of my web-available patches from &lt;a href="http://splurge.peoples-wireless.com/kennys/patches/"&gt;~/kennys&lt;/a&gt; to &lt;a href="http://splurge.peoples-wireless.com/kennys/patches/"&gt;~/kennys/patches&lt;/a&gt;. There's a new patch on there as of today, too. I wrote a &lt;a href="http://splurge.peoples-wireless.com/kennys/patches/chan_iax2.c.show_peer_complete.patch.txt"&gt;chan_iax2.c patch&lt;/a&gt; to implement tab completion of "iax2 show peer &lt;peername&gt;". Capouch likes it, and I'm pretty certain it'll be useful to the community so I'll submit it tonight or tomorrow.&lt;br /&gt;&lt;br /&gt;I found a very amusing audio file in the asterisk source today. "tt-monkeysintro.gsm" is something that must be heard to be appreciated. I've included &lt;a href="http://splurge.peoples-wireless.com/kennys/tt-monkeysintro.gsm"&gt;a link&lt;/a&gt; to it for those that don't have an asterisk system at their disposal.&lt;br /&gt;&lt;br /&gt;Things I started today but didn't finish due to the network outage or other reasons were 1) moving the &lt;a href="http://www.damnsmalllinux.org/"&gt;damnsmalllinux&lt;/a&gt; .iso I downloaded to moonlord a week ago to onyx, 2) downloading the docs and source for &lt;a href="http://openwrt.org/"&gt;openwrt.org&lt;/a&gt; for the wrt Blake/BC sent me. 3) Playing with &lt;a href="http://www.voip-info.org/wiki-Asterisk+astman"&gt;astman&lt;/a&gt; and &lt;a href="http://www.voip-info.org/wiki-Asterisk+Gastman"&gt;gastman&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110708039350074729?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110708039350074729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110708039350074729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110708039350074729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110708039350074729'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-29-2005-saturday.html' title='01 29 2005, Saturday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110697745051855890</id><published>2005-01-28T23:45:00.000-05:00</published><updated>2005-01-29T00:44:10.520-05:00</updated><title type='text'>01 28 2005, Friday</title><content type='html'>I finished (more or less) my &lt;a href=http://splurge.peoples-wireless.com/kennys/app_queue.c.cliqpause.patch.txt&gt;cli queue functions&lt;/a&gt; patch. It does all of the core things I wanted to accomplish, fully fleshed out with tab completion, etc. I even had to fix the existing tab completion for complete_remove_queue_member; the coder had forgotten one crucial line (the one that does the actual completing). This is another patch I'm proud of and will probably submit, if I ever get any feedback from BC, Blake, or others.&lt;br /&gt;&lt;br /&gt;'make install' of asterisk on darklord takes about 8 seconds. 'make install' of asterisk on sigma takes about 90 seconds.&lt;br /&gt;&lt;br /&gt;I ended up staying up really late last night and continuing to code. Just for fun/to screw with Blake I wrote another console function "kill other users" which walks the possible consoles and kills all existing consoles but the one associated with the caller. It only took a few minutes to write, and works entertainingly well. : )&lt;br /&gt;&lt;br /&gt;Today I also played with my show_remote_users patch some more, to output to the cli the thread id of each active console. Not sure exactly what I can do with this yet, but I now know I don't have to bother modifying the console data structure to add a "name" variable since the thread id will serve as a unique identifier for each console. I'm still toying with the idea of writing a "console echo" function to output to multiple/all consoles the input at one of them. The more I think about it, the less trivial it seems. I'm sure I could write it, but on first thought it seemed like it would require just a few lines of code and I no longer think it's that easy. We'll see...&lt;br /&gt;&lt;br /&gt;I perused some of the &lt;a href=http://lists.digium.com/pipermail/asterisk-biz/2005-January/thread.html&gt;various&lt;/a&gt; &lt;a href=http://lists.digium.com/pipermail/asterisk-dev/2005-January/thread.html&gt;asterisk&lt;/a&gt; &lt;a href=http://lists.digium.com/pipermail/asterisk-users/2005-January/thread.html&gt;lists&lt;/a&gt; at &lt;a href=http://lists.digium.com/mailman/listinfo/&gt;lists.digium.com&lt;/a&gt;. I hope to download all the archives I can to store locally for the long dark time when my machines will seldom see the light of the Internet.&lt;br /&gt;&lt;br /&gt;I also browsed a bit (from a Win machine after sigma's low battery prevented me from further coding) around one of my old time favorites, &lt;a href=http://everything2.com/&gt;everything2.com&lt;/a&gt;. Always classic are the &lt;a href=http://everything2.com/index.pl?node_id=387214&gt;amusing comments&lt;/a&gt; coders put in their code, and &lt;a href=http://everything2.com/index.pl?node_id=1120652&gt;God's comments&lt;/a&gt; on the source code of the universe. A few of my other favorites are &lt;a href=http://everything2.com/index.pl?node_id=617596&gt;Interview with God&lt;/a&gt; and &lt;a href=http://everything2.com/index.pl?node_id=931195&gt;using a jedi mind trick on a state trooper&lt;/a&gt;. e2 also has nodes for &lt;a href=http://everything2.com/index.pl?node_id=135040&gt;asterisk&lt;/a&gt;, &lt;a href=http://everything2.com/index.pl?node_id=1544561&gt;iax&lt;/a&gt;, and &lt;a href=http://everything2.com/index.pl?node_id=328758&gt;sip&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Again I thought I had done more today, but I can't remember it all now. I'm worn out from so many late nights of coding and early mornings of teaching. I feel like I'm working 2 full-time jobs... maybe because I'm putting in at least that many hours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110697745051855890?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110697745051855890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110697745051855890' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110697745051855890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110697745051855890'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-28-2005-friday.html' title='01 28 2005, Friday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110689008878080732</id><published>2005-01-27T23:14:00.000-05:00</published><updated>2005-01-28T01:42:33.996-05:00</updated><title type='text'>01 27 2005, Thursday</title><content type='html'>Today was better than yesterday, coding-wise.&lt;br /&gt;&lt;br /&gt;I wrote the asterisk cli function "show remote users", by counting the consoles that had valid file descriptors. Mostly I jacked the code from ast_network_puts; the entire cli function handler is below.&lt;br /&gt;&lt;br /&gt;static int handle_showremoteusers(int fd, int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;        int x,rusers=0;&lt;br /&gt;	for(x=0;x&amp;lt;AST_MAX_CONNECTS;x++) {&lt;br /&gt;		if(consoles[x].fd &amp;gt; -1)&lt;br /&gt;			rusers++;&lt;br /&gt;	}&lt;br /&gt;	ast_cli(fd, "There are %d remote consoles logged in.\n", rusers);&lt;br /&gt;&lt;br /&gt;	return RESULT_SUCCESS;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Of course, I also had to implement this into the cli interface, giving it usage, help, and register functions/data.&lt;br /&gt;&lt;br /&gt;I'm pretty pleased with this, though I'm reluctant to submit it until I hear more feedback from BC, Blake, et al. This code is by far most easily added to asterisk.c, which is the core of the entire actual asterisk program. I expect that not just any functions get included in here, and I don't have any idea what Mark or the community would deem worthy of taking up space here. If unused, the function just takes up space and contributes to program bloat. But it has a tiny footprint and I suppose anyone wanting to not use it could comment the cli_register line in main() for it...&lt;br /&gt;&lt;br /&gt;I got &lt;a href="http://bugs.digium.com/karma_view_transactions.php?id=2257"&gt;1 karma&lt;/a&gt; point on the &lt;a href="http://bugs.digium.com/main_page.php"&gt;asterisk bug site&lt;/a&gt;, which is pretty cool. I don't think it's anything really special, just acknowledgement of positive participation in the community. My bug is now officially resolved, closed, and included in the stable release. Half an hour after BC emailed the geeklist setup at SJC (which I'm on as of 2 or 3 days ago when I emailed Phil) to tell everyone again about &lt;a href="http://bugs.digium.com/bug_view_page.php?bug_id=0003427"&gt;my frame.c patch&lt;/a&gt;, I was sending out an email to the same group offering &lt;a href="http://splurge.peoples-wireless.com/kennys/asterisk.c.show_remote_users.patch.txt"&gt;my new patch&lt;/a&gt; with the "show remote users" function. I'm hosting it on a machine of Capouch's (Thanks!!) but it's not polished or published yet, so consider yourself warned if you run asterisk and run the patch.&lt;br /&gt;&lt;br /&gt;I competed on &lt;a href="http://topcoder.com/"&gt;topcoder&lt;/a&gt; for the first time in a year or more today. Back in the day I won over $100 from the site for my mediocre java programming abilities. I stopped playin' when they stopped payin' -- they used to have a system where there were a bunch of "rooms" of 10-20 coders of about the same level, and the winners of every room got some cash. When they changed it so that only the very best coders got cash, I lost interest because I wasn't even competitive with them. I'm probably still not at that level, but I'm definitely a hell of a lot better than I was back then.&lt;br /&gt;&lt;br /&gt;But you program in java or C++, neither of which are strong suits for me. I went with java and got by -- the 1 (of 3) programs I submitted passed, which I was pleased by. I ended up using a bunch of roundabout Type functions to cast Strings to ints (WAY too much use of the Integer class), but it worked. S'all good. A *VERY* useful link when doing any sort of java programming is the &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/allclasses-noframe.html"&gt;All Classes&lt;/a&gt; page of the official java documentation at &lt;a href="http://java.sun.com/"&gt;java.sun.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I made a lot of progress today on my patch to make PauseQueueMember and UnpauseQueueMember cli-accessible. The cli wrappers are all written, so currently on sigma if you type "pause queue member" the cli says "This is where some pause function should be called." I might finish that tomorrow, but Blake and I came up with an awesome idea for an asterisk functionality that I think I can implement somewhat trivially so that's top priority tomorrow.&lt;br /&gt;&lt;br /&gt;Blake wanted to echo a terminal to see exactly what I was doing to apply my patch on moonlord (which was a big ordeal I'll talk about next). I'm sure it can be done with relative ease, but neither of us knew/remembered off the top of our heads how to do it. But I was struck with an idea on a new and unique way to echo a terminal using asterisk. Some output strings are currently written to every console, and some are written to only one (eg any time a new remote console is opened, the message " -- Remote UNIX connection" is printed on *every* currently connected console, but any time a typical cli function is run, its output is printed just to the calling console). If I could write a switch to determine when cli output is printed on all consoles, then Blake could see exactly what I was doing in the cli because it would all echo to him. "But," you're saying, "that's just the CLI... that doesn't echo the terminal, which is what you said you wanted to do." So I did. But it still can be done, because if we both fire up our asterisk -r sessions and I do my terminal business via the asterisk cli and the '!' operator, he can see exactly what I input to the console. Sweet, eh?&lt;br /&gt;&lt;br /&gt;I'm not positive this will work exactly as smoothly as I first envisioned. The code may be hairier than I first thought, but I think it should still be doable. We'll see...&lt;br /&gt;&lt;br /&gt;moonlord misbehaves with CVS and make install. I patched my code, ran make install, and the new function wasn't accessible. I tried again. Still no go. I deleted asterisk.c, re-ran CVS to get a new one, patched it, make install'd, still no go. Further, the "new" CVS is still reporting via "show version" in the CLI as 2 or 3 days old (should be minutes old). Not sure what the deal is there, except that moonlord has (apparently) always behaved that way. I vaguely recall that from last year, and Blake says it usually misbehaves in this way. But my frame.c patch worked fine... (I think... did I apply it there? Not sure...).&lt;br /&gt;&lt;br /&gt;So Blake mv'd /usr/src/asterisk to /usr/src/asterisk-old and got new CVS, which then worked. As long as it's a totally clean build, patches and make install work fine. Wish I knew where the problem was so we could fix it.&lt;br /&gt;&lt;br /&gt;Blake "gave" me another machine to play on at SJC. I pretty much have free reign on moonlord, but it's more and more being used for (of all things) actualy voip telephony. I shouldn't get in the habit of bringing asterisk down and rebuilding it whenever I please, since eventually there will be a time when I can't play on it. But I still want a remote asterisk server to toy with at will, so Blake offered me darklord, another SJC machine that isn't in use this semester for anything class-related. And it's a workhorse -- 2.8 GHz/512 MB/40 GB. Mwa ha hah. I already installed asterisk and ran my latest patch on it. Good stuff. : )&lt;br /&gt;&lt;br /&gt;I feel like I haven't covered everything tech I've done today, but I'm so tired I'm trying to tab-complete stuff in my blog, and I still have to shower. So that's all for tonight.&lt;br /&gt;&lt;br /&gt;If you read this, and are at all asterisk-conversant, please give me feedback about &lt;a href="http://splurge.peoples-wireless.com/kennys/asterisk.c.show_remote_users.patch.txt"&gt;my latest patch&lt;/a&gt;.  Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110689008878080732?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110689008878080732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110689008878080732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110689008878080732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110689008878080732'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-27-2005-thursday.html' title='01 27 2005, Thursday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110680786342490534</id><published>2005-01-27T01:16:00.000-05:00</published><updated>2005-01-27T01:37:43.423-05:00</updated><title type='text'>01 26 2005, Wednesday</title><content type='html'>Today wasn't as productive as I would have liked it to be.&lt;br /&gt;&lt;br /&gt;I woke up to find sigma crashed because I didn't seat the power cord all the way in when I put it down and fell asleep last night (Yes, I've taken to coding even as I'm falling asleep...).&lt;br /&gt;&lt;br /&gt;At breakfast I was working on writing a cli function to show how many remote users there are logged into asterisk at a given time. I wrote the help and app register functions with no problems, but the actual handler is proving more difficult. Of course, writing through putty on windows isn't helping -- especially when Ctrl + u pops up 3 windows for Narrator or some MS crap.&lt;br /&gt;&lt;br /&gt;The problem with the code is that the variable "option_remote" in asterisk.c is only used in that file. I have to change include/asterisk/options.h to define it as an extern variable, and even then I can't just read it and output it on the screen. The variable is only ever used as a boolean to test whether a remote option was used when asterisk was invoked. So I guess I'll have to add another variable. Though in theory I should be able to effectively count the number of current users by testing the consoles from 0..AST_MAX_CONNECTS for a file descriptor &gt; -1. That's essentially how ast_network_puts in asterisk.c does it, and seems preferable to me -- then I don't have to track down every point of ingress and egress for a remote user and change the variable all over the place.&lt;br /&gt;&lt;br /&gt;So that's on the agenda for tomorrow.&lt;br /&gt;&lt;br /&gt;I was frustrated I didn't have a machine to code on today at school. I finished re-reading &lt;u&gt;Lord of the Flies&lt;/u&gt; and spent a bit more time socializing, but there was code running through my head all day long.&lt;br /&gt;&lt;br /&gt;I got back to my room late-ish this evening, and didn't get a whole lote done. I iax'ed with Blake for awhile to roughly benchmark call quality of my connection using both iLBC and GSM (iLBC worked better tonight, but both still sucked). Then I installed the iax jitter buffer patches on moonlord that Steve Davies and Steve Kann installed. But Blake was busy after that and I got sidetracked, so we didn't get to test that this evening.&lt;br /&gt;&lt;br /&gt;I printed the &lt;a href=http://www.digium.com/disclaim.changes&gt;disclaimer&lt;/a&gt; to be allowed to legally submit code to asterisk. Not a big deal, but still a part of feeling like I'm "in the club" if they have a disclaimer on file for me. And one less thing to worry about when I start writing/submitting code more seriously.&lt;br /&gt;&lt;br /&gt;And now bed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110680786342490534?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110680786342490534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110680786342490534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110680786342490534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110680786342490534'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-26-2005-wednesday.html' title='01 26 2005, Wednesday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110671025883302563</id><published>2005-01-25T20:38:00.000-05:00</published><updated>2005-01-26T00:11:57.933-05:00</updated><title type='text'>01 25 2005, Tuesday</title><content type='html'>Exciting day.&lt;br /&gt;&lt;br /&gt;I did end up getting my resume out about that parttime asterisk developer position last night. No ack yet from the person I mailed it to.&lt;br /&gt;&lt;br /&gt;sigma and I worked on the agent/queue system today. It was pretty difficult on sigma because it wasn't online and there's no (as far as the kernel knows) sound card -- so I couldn't use the Dial application even to create dummy calls. But I got the configuration more or less setup by snarfing the appropriate lines from moonlord's configuration files from when Braner (or Blake?) played with the queueing system last year. The &lt;a href="http://voip-info.org/tiki-index.php?page=Asterisk%20agent%20channels"&gt;wiki&lt;/a&gt; &lt;a href="http://voip-info.org/tiki-index.php?page=Asterisk%20call%20queues"&gt;helped&lt;/a&gt; &lt;a href="http://voip-info.org/tiki-index.php?page=Asterisk%20Agents"&gt;too&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I don't think the conf I have is quite right, but it really doesn't matter -- sigma will never actually implement a "real" queue unless it has a persistent net connection and I have some hardphones. : )&lt;br /&gt;&lt;br /&gt;I'm making great use of the asterisk feature which lets you drop a file specifying a call into /var/spool/asterisk/outgoing and have it immediately active. I've known about this capability, but never used it before. I researched how to create a dummy channel (Channel type is "local"; &lt;a href="http://asterisk.espia-net.net/horde/chora/co.php/asterisk/doc/localchannel.txt?r=1.2.2.1"&gt;documentation&lt;/a&gt; can be found in ~/asterisk/doc/localchannel.txt).&lt;br /&gt;&lt;br /&gt;Here's an example call to log an agent in:&lt;br /&gt;&lt;br /&gt;Channel: local/8502@agent/n&lt;br /&gt;Context: agent&lt;br /&gt;Extension: 8502&lt;br /&gt;Priority: 1&lt;br /&gt;&lt;br /&gt;And to add a call to the queue:&lt;br /&gt;&lt;br /&gt;Channel: local/8500@agent/n&lt;br /&gt;Context: agent&lt;br /&gt;Extension: 8500&lt;br /&gt;Priority: 1&lt;br /&gt;&lt;br /&gt;I really want to use the AgentLogin function in one of these calls, but it requires a passcode to be entered and I'm not positive that can be done using this type of call. A feature I could implement which would circumvent that would be to allow passcode-less logins for agents. I expect the code to implement that wouldn't be exceedingly difficult for me.&lt;br /&gt;&lt;br /&gt;In playing with the various queue functions, I discovered what I consider a bug. The dummy calls I created from text files were all of channel type "local". When looking at the queue via "show queues" in the cli, the user is shown as "Local" (capital 'L'). From this point, as far as I can tell, the channel must be referenced with that first character capitalized. I ran PauseQueueMember and UnpauseQueueMember from the dialplan (with another dummy call), and they wouldn't work if I described the channel as "local", because of the case of the first character. I consider this a bug because I'm attempting to use the same string to initialize the call and then reference it later. It's not right for the program to rename my variables on me so that I can't use their original names. I haven't delved to see where exactly this occurs yet, or if it's true for all channel types (I suspect it is), but I intend to.&lt;br /&gt;&lt;br /&gt;I think PauseQueueMember and UnpauseQueueMember should be CLI-accessible functions; they're currently not. It would take minimal effort to implement them, since existing functions just need to be cli_register()'ed. Perhaps I'll work at that tomorrow. I wouldn't think that there would necessarily be much demand for these functions on the CLI, but they would help me, and they wouldn't hurt anyone else to be there. Plus, the 'meetme' app just got many of its control functions CLI-ized. Why not queue functions too?&lt;br /&gt;&lt;br /&gt;I got new CVS today on onyx so I could test my patch once more before finally submitting it. Turns out I didn't need to; the one file (frame.c) my patch edits hasn't been modified since my last CVS update. But it never hurts to run the current HEAD.&lt;br /&gt;&lt;br /&gt;I finally posted &lt;a href="http://bugs.digium.com/bug_view_page.php?bug_id=0003427"&gt;my patch&lt;/a&gt;. In my overwhelming desire to be thorough and not to look like a newbie, I went back and rewrote the show_codec_n code to make the input more intuitive. Instead of the log(base 2) of i representing the desired index in the codec array, I wrote it so that i is just the desired index. I didn't submit this patch, but offered to on the patch I did submit.&lt;br /&gt;&lt;br /&gt;I'm quite anxious to hear what Mark et al think of my patch.&lt;br /&gt;&lt;br /&gt;A &lt;a href="http://www.google.com/alerts"&gt;google alert&lt;/a&gt; fired for an article including the text "asterisk" and "voip". &lt;a href="http://www.emediawire.com/releases/2005/1/emw200892.htm"&gt;The article&lt;/a&gt; was a PR for a random asterisk consulting company, with no "news" value at all. But I checked out &lt;a href="http://voipsupply.com/home.php"&gt;their site&lt;/a&gt; anyway, to see what they were asking for asterisk hardware and services. I was appalled to find that they sell a typical-seeming &lt;a href="http://www.voipsupply.com/product_info.php?cPath=101_132&amp;products_id=194&amp;amp;osCsid=0fa2d67ba744eb256c8c604566bb6957&amp;amp;desc=VoIP%20Starter%20Kit"&gt;P4 system&lt;/a&gt; with a bunch of RAM and hard drive space and asterisk installed for $3800. That must be a *HUGE* profit margin, even assuming (a steep?) $2500 for the hardware. They also sell asterisk support service contracts for over $1000 a month. Ridiculous.&lt;br /&gt;&lt;br /&gt;apple shipped my Shuffle today. I wasn't positive I'd ordered one in time to be ahead of the shortage, but apparently I have. I'll need to prepare an eBay listing while I'm still in TN so I can list it the instant I get back to Charleston and have it in my hands. : )&lt;br /&gt;&lt;br /&gt;*** Later ...&lt;br /&gt;&lt;br /&gt;I want to migrate off blogger post-haste. It's slow and sometimes times out during POSTing. When I clicked back after trying to publish this post the first time (because the server timed out), it emptied my form -- it didn't rewrite my entry like it should have (if I were in charage). Luckily, clicking 'forward' attempted to repost the form, and it worked.&lt;br /&gt;&lt;br /&gt;Blake hooked me up with a login and space on a machine at his house, so I'll migrate there when opportunity allows. I also want to check out his &lt;a href=http://blog.asterwake.com/index.php&gt;asterwake&lt;/a&gt; stuff. Sounds pretty cool.&lt;br /&gt;&lt;br /&gt;Mark reviewed my patch and approved it to be entered into CVS-HEAD within an hour of my posting it. He doesn't want to change the behavior of the input to show_codec_n, since the mask allows multiple codecs to be selected with one variable. I can understand that. No worries.&lt;br /&gt;&lt;br /&gt;I'm tempted to checkout new CVS on all the asterisk machines I know, just because part of it is now "mine" in a small sense. Silly but that's okay. : )&lt;br /&gt;&lt;br /&gt;Capouch sent an email to a few class lists with the subject "SJC Graduate beats out Capouch to submit bugfix for Asterisk". I regard that as high praise from him, and I'm pleased.&lt;br /&gt;&lt;br /&gt;I got sidetracked this evening by several IM conversations. I talked to a friend from high school I haven't seen since graduation and have only talked to a handful of times since then, and a few college friends who I don't often talk to. It was pleasant, and a nice little break from working pretty much every waking moment for days on one project or another.&lt;br /&gt;&lt;br /&gt;This is a link I found through slashdot (I think) yesterday that seems interesting but which I haven't had time to read yet. It's about &lt;a href=http://www.sciam.com/print_version.cfm?articleID=000519BF-3128-11E8-A28583414B7F0000&gt;making memories stick&lt;/a&gt;, a comparison between human memory and computer data storage. I guess. I'm just linking it here because I don't want to keep the tab in my browser open forever, and this blog is serving well as a set of personal bookmarks.&lt;br /&gt;&lt;br /&gt;At least a few people read it, though -- Justin had already read about my patch submission when I IMed him to talk about it. : )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110671025883302563?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110671025883302563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110671025883302563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110671025883302563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110671025883302563'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-25-2005-tuesday.html' title='01 25 2005, Tuesday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110662250853963157</id><published>2005-01-24T21:42:00.000-05:00</published><updated>2005-01-25T00:09:39.293-05:00</updated><title type='text'>01 24 2005, Monday</title><content type='html'>Another day with minimal online time before I'm too tired to do much but sleep. But a productive day, nonetheless.&lt;br /&gt;&lt;br /&gt;I took sigma to breakfast (where there's a wifi net I can use) and downloaded the &lt;a href=http://us4.php.net/download-docs.php&gt;php documentation&lt;/a&gt;. I tried both the single-file html and the multi-file html. Multi-file was much preferable to me given the proc speed on sigma... It took over a minute just to load the monolithic html file into vi. Never mind searching/reading it...&lt;br /&gt;&lt;br /&gt;So I coded php during every break I had today. I translated the core of the perl scripts I wrote yesterday into php, with surprising ease. I've done almost nil php ever, but with the documentation handy it wasn't hard at all. I finished the php/apache install on sigma, so it's ready to serve as a php devel machine. And it already is... I also wrote a few generic php scripts to test/observe some php/html behaviors (phpinfo(), form posting, accessing variables like $_SERVER['HTTP_USER_AGENT'], etc). I wrote a simple php script (mostly just copied from the documentation) to give a directory listing, too. I symlinked that to index.php, so I can browse webbily between the scripts I've written and stored in the web directory. Pretty cool. I'm very pleased with the amount of work I've been able to get done net-less, learning a new programming language.&lt;br /&gt;&lt;br /&gt;I still haven't gotten around to posting my asterisk bug patch or implementing an agent/queue system or submitting a resume to the dude who wants to hire a parttime php/perl coder. I hope to get the resume out tonight, but not much else. I'm still itching to try out the iax jitter buffer patch, too. There aren't enough hours in the day, and too few of them are spent with net access. I'm toying with the idea of getting web access on my phone, and buying/building the kit to hook it to a laptop via USB. It wouldn't be cheap, but I used to pay $90 a month for DSL when I all I did was use Napster and email... I can probably afford $15 a month for 'business' stuff. We'll see if I get cell reception at our next AmeriCorps spike.&lt;br /&gt;&lt;br /&gt;I was going to begin implementing agents on asterisk on sigma today on the drive home from work, but sigma read only 20% battery and that's about where it was when it crashed yesterday so I let it sleep. I ended up dozing off too, and dreamed a bit. But when I woke up I could only remember bits and pieces of my dream. In trying to recall it, I thought of an interesting analogy -- waking up in the middle of a dream is like handling an interrupt without first storing the registers. Crazy things happen with the data in memory... you might later encounter some of the register data from the dream, but not in the proper context, and it should generally be considered "garbage". I've been thinking in computer-thought too much lately. : )&lt;br /&gt;&lt;br /&gt;On to the resume, and, dammit, prolly the agent stuff too. I should sleep, but the catnap on the way home refreshed me a bit.&lt;br /&gt;&lt;br /&gt;*** Later ...&lt;br /&gt;&lt;br /&gt;Okay. Resume sent. No agent stuff done yet, but I did read a few interesting links. There's a &lt;a href=http://ipinferno.blogspot.com/&gt;review of Bellster&lt;/a&gt; from Slashdot, which didn't impress me. I think the author is either exaggerating or ignorant of the cost of asterisk systems, stating that a pre-built system runs $1000+. I'm positive I could build something perfectly capable and featureful for sub-$100. I emailed BC to ask his thoughts on it... if there truly aren't stock systems for sale at or near the $100 price-point, there ought to be. Perhaps I'm in the wrong business...&lt;br /&gt;&lt;br /&gt;I also asked Capouch in a postscript about the FPU limitation of the asterisk wrt. The issue is that the wrt's lack of an FPU makes it very slow in translating some codecs. I guess iLBC is particularly bad - as in unuseable on that system. So my question to BC inquired whether the wrt had no *hardware* FPU, or if there wasn't even a *software emulator* of the FPU. I'm a bit out of my depth, here, since I know little about the hardware for embedded systems. But it occurs to me that if there's no (or a poor) software FPU at all, and someone could get the spec for the proc and write one, perhaps performance would improve dramatically. I guess I ought to add this to the list of things to research When I Get Time.&lt;br /&gt;&lt;br /&gt;Another link I found (via /.) was about &lt;a href=http://corante.com/loom/archives/of_stem_cells_and_neanderthals.php&gt;stem cells and evolution&lt;/a&gt;. I found it very interesting and a very worthwhile read.&lt;br /&gt;&lt;br /&gt;Slashdot has been less and less impressive to me lately -- for the 2nd or 3rd time in about 4 days, they've posted an article fully 24 or more hours *after* I've been exposed to it through my own resources. FWIW.&lt;br /&gt;&lt;br /&gt;I found one final link, in my continuing quest to educate Erin about linux. We've moved beyond some of the basic definitions and vocabulary, and she's met Tux, so I felt it was time to expose her to some bonafide &lt;a href=http://www.msxposse.com/viewtopic.php?t=468&gt;linux babes&lt;/a&gt;. This is a random forum link with a bunch of pictures of semi-nude females in various linux/freebsd/tux regalia. Several comments come to mind:  Don't link this if you're on a slow connection; it's lots of pictures and it'll take a while to load.  People are morons who can't spell or photoshop for shit. This is the closest I've ever come to linking pornography.&lt;br /&gt;&lt;br /&gt;I have a google alert setup to tell me about news articles that include "voip" and "asterisk" (or similar) and it tagged &lt;a href=http://voxilla.com/voxstory136.html&gt;this one&lt;/a&gt; for me at voxilla, reporting the pending "Open-Source PBX Battle" between asterisk and &lt;a href=http://www.sipfoundry.org/sipX/&gt;sipx&lt;/a&gt;. I haven't used sipx, and don't know of anyone that has... if I ever get SIP hardware again, I may have to try it.&lt;br /&gt;&lt;br /&gt;I reckon that's all for the evening. G'day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110662250853963157?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110662250853963157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110662250853963157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110662250853963157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110662250853963157'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-24-2005-monday.html' title='01 24 2005, Monday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110652342107595087</id><published>2005-01-23T17:41:00.000-05:00</published><updated>2005-01-23T23:52:16.373-05:00</updated><title type='text'>01 23 2005, Sunday</title><content type='html'>I began building a(nother) 2.6 kernel for sigma last night as I went to bed. It worked, but still not quite with all the functionality I need/want. In 2.6 you have to explicitly compile in the ability to rmmod (why? why would you ever not want to remove modules from the kernel?), which I forgot. I also haven't given up hope yet that this little beast can run sound, so I want to compile more alsa drivers in the hopes that one of them will work. I think once upon a time I did get audio "working" on this laptop... but that was a year ago, and all my configurations have changed since then.&lt;br /&gt;&lt;br /&gt;I woke up to several emails from Capouch, including forwards of an &lt;a href="http://bugs.digium.com/bug_view_page.php?bug_id=0002532"&gt;iax jitter buffer patch&lt;/a&gt; Steve Kann wrote that I hope to test with Blake later today, an invitation/request to help with the IAX portion of his textbook, and &lt;a href="http://www.mail-archive.com/asterisk-users@lists.digium.com/msg71539.html"&gt;a post&lt;/a&gt; on a digium list offering a part-time job for an enthusiastic developer willing to write a web reporting utility for asterisk CDR/agent use. The work sounds like stuff I could do -- I've done a bit of CDR parsing in the past, and I know a tad about agent/queue stuff in asterisk.&lt;br /&gt;&lt;br /&gt;To that end, I took sigma with me on the 90 minute drive to Chattanooga this morning to an independent AmeriCorps volunteer project. I coded in perl the whole drive, writing scripts to parse Master.csv and queue_log and outputting interesting statistics for each. Pretty simple code, really.&lt;br /&gt;&lt;br /&gt;When I got back online this afternoon, I had an email from Capouch that was a forward of a conversation he had with Mark Spencer. BC plugged the "Kenny should write the IAX RFC" to him, and he was supportive. He suggested perhaps he could find me a spot at Digium following that. Exciting news, definitely.&lt;br /&gt;&lt;br /&gt;I'm not with onyx right now, so I'm on a Windows machine. I'm installing newer apache and php on sigma to play more with the CDR/agent webfront idea, but I really don't think it'll be that difficult to get something simple going. I guess I'd like to offer a proof of concept along with my resume when I contact the dude who posted that offer.&lt;br /&gt;&lt;br /&gt;I've also started scrounging more heartily for iax documentation. Capouch recommended I look &lt;a href="http://www1.cs.columbia.edu/~library/TR-repository/reports/reports-2004/cucs-039-04.pdf"&gt;here&lt;/a&gt; as a starting point for the IAX-RFC project. It's an 'Analysis of Skype...', which will be useful to me in determining the content and structure of what an iax rfc should say. I'll also be downloading copies of the SIP, MCGP, and RTP RFCs when I get back to onyx.&lt;br /&gt;&lt;br /&gt;I found a few useful links regarding the actual IAX spec, too. Of course, the &lt;a href="http://www.voip-info.org/wiki-IAX"&gt;voip-info wiki&lt;/a&gt; is a good starting point. It referred me to &lt;a href="http://www.cornfed.com/iax.pdf"&gt;cornfed.com&lt;/a&gt;, which I noticed is own and run by Frank Miller -- the guy who's worked with Mark to write what spec there is. Remembering something Capouch said recently in an email, I researched a bit to find the &lt;a href="http://www.ethereal.com/lists/ethereal-dev/200401/msg00033.html"&gt;iax dissector for ethereal&lt;/a&gt; as well. BC, it was written by a guy named Alastair Maw if you were still curious. ; )&lt;br /&gt;&lt;br /&gt;So now what to do while I'm waiting on the php make to finish and I have little else to do with a windows system here?&lt;br /&gt;&lt;br /&gt;Here's a list of some things I want to get done soon:&lt;br /&gt;Lookup RFCs of technologies similar to iax.&lt;br /&gt;Install pdftotext on sigma, because it's a bitch to have to ssh to moonlord and do it.&lt;br /&gt;Make several ethereal dumps of iax in action, including registration, call setup, call progress, call takedown.&lt;br /&gt;Research more into &lt;a href="http://damnsmalllinux.org/"&gt;damnsmalllinux&lt;/a&gt; or some other mini distro that can fit into and work from a USB flash drive. I have visions of using my iPod Shuffle to run linux, which might be really cool because I may be the first person to do it. : )&lt;br /&gt;&lt;br /&gt;Sigma just crashed because the batteries died... guess I should consider powering down once I'm &amp;lt; 20%. : (&lt;br /&gt;&lt;br /&gt;Capouch, Blake, and others who use WRTs... have you heard about &lt;a href="http://www.batbox.org/wrt54g-linux.html"&gt;batbox.org's linux wrt distro&lt;/a&gt;? I discovered it just now while looking up mini distros to use instead of/along with dsl.&lt;br /&gt;&lt;br /&gt;*** Later...&lt;br /&gt;&lt;br /&gt;Found an interesting link via slashdot about &lt;a href=http://elonka.com/UnsolvedCodes.html&gt;unsolved codes&lt;/a&gt; and ciphers that's pretty interesting. The actual &lt;a href=http://www.wired.com/news/culture/0,1284,66334,00.html?tw=wn_tophead_2&gt;link&lt;/a&gt; from slashdot was to a wired.com article about &lt;a href=http://en.wikipedia.org/wiki/Kryptos&gt;Kryptos&lt;/a&gt;, a sculpture on the grounds of CIA headquarters in Langley, VA which contains 4 (or more?) encrypted messages.&lt;br /&gt;&lt;br /&gt;I'm sleepy and somewhat unmotivated now, without a linux to play in. And I won't get to play anymore tonight since I have to pick up a friend at the airport later and her flight has been continually delayed.&lt;br /&gt;&lt;br /&gt;I browsed eBay for laptop parts, particularly a battery for onyx so it can be mobile again (as is, the machine dies the instant AC power is removed). I also looked at Armada 4XXX parts and found some potential buys but nothing stellar right now. Finally I looked at iPod Shuffles and found something interesting... The highest selling price for a &lt;a href=http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;category=75459&amp;item=5744454116&amp;rd=1&gt;Shuffle on eBay&lt;/a&gt; is $280, an almost 100% markup. Prices will certainly drop as the units ordered from apple.com arrive in peoples' hands (like mine), but I'll check prices again the day I receive mine and if I stand to make $50+ by reselling it I'll do it in a heartbeat. : )&lt;br /&gt;&lt;br /&gt;eBay fixed a glitch in my feedback -- for some reason it said my positive feedback percentage was 98.7 % or something, though I've never had any negative feedback. I emailed them and asked what the deal was and they fixed the problem so I'm back at 100%. I was surprised (pleasantly) that I made a complaint and they actually quietly fixed it instead of hassling me for several iterations first.&lt;br /&gt;&lt;br /&gt;I looked on &lt;a href=http://dogbert.abebooks.com/servlet/SearchResults?bx=off&amp;sts=t&amp;ds=30&amp;bi=0&amp;isbn=0072467509&amp;sortby=2&gt;abebooks.com&lt;/a&gt; and &lt;a href=http://half.ebay.com/cat/buy/prod.cgi?cpid=1158084583&amp;domain_id=1856&amp;meta_id=1&gt;half.com&lt;/a&gt; for the book that BC told me the other day they use for CMP 111 at SJC. It starts with assembly and works up through C, which seems a very sensible way of doing things. BC says this is a book well worth having and I asked him to try to negotiage with someone in class to sell it to me at the end of the semester. : )  If that doesn't work, then at least I have these hardlinks to the sites where I'll surely buy it.&lt;br /&gt;&lt;br /&gt;I glanced at &lt;a href=http://xml.resource.org/&gt;xml2rfc&lt;/a&gt;, at BC's suggestion based on Mark's email. I'll need to download and install and play with it to get comfortable using it; this will be a primary tool in the iax rfc project. I honestly don't know the first thing about xml. Yet.&lt;br /&gt;&lt;br /&gt;Capouch approved my use of webspace on a machine of his but I need to iron out the details.&lt;br /&gt;&lt;br /&gt;I feel like I should be trying to set up a new agent/queue system in moonlord's dialplan right now to get rolling on this web cdr queue project, but I'm tired and the chore of doing that via telnet is an unpleasant thought. Why don't Windows machines come standard with putty or some other ssh client??&lt;br /&gt;&lt;br /&gt;*** Even later ...&lt;br /&gt;&lt;br /&gt;As the night wears on and I have nothing better to do, I just keep readin' and thinkin'. I'm waiting on an AC teammate to get back from a trip home for a wedding, and her plane is delayed. She was supposed to be back over an hour ago, and she's still 3+ hours away. I won't sleep much tonight. But I'm getting a ton done! Look how long this post is!!&lt;br /&gt;&lt;br /&gt;Anyway... I installed &lt;a href=http://xml.resource.org/&gt;xml2rfc&lt;/a&gt; on moonlord. Not that I really get what it does yet... but it's a start. I read a bit about XML through a &lt;a href=http://xml.resource.org/authoring/draft-mrose-writing-rfcs.html#xml_basics&gt;link&lt;/a&gt; I found from &lt;a href=http://xml.resource.org/authoring/README.html&gt;xml2rfc's README&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I read about &lt;a href=https://www.ciphirebeta.com/&gt;ciphire&lt;/a&gt; a new &lt;a href=http://en.wikipedia.org/wiki/Public-key_cryptography&gt;public-key encryption&lt;/a&gt; system for email. I'm excited to try it out, the buzz is impressive. I haven't read about its actual capabilities yet, but the marketing (if nothing else) is good.&lt;br /&gt;&lt;br /&gt;Maybe I'm done updating for the night now. Maybe.&lt;br /&gt;&lt;br /&gt;...but no. I'm back at Hiwassee College where I'm staying right now, and though I've only had 20 minutes to work I've made them productive.&lt;br /&gt;&lt;br /&gt;I have root access on a public linux machine now, which means a home for my web stuff. That's Good. I couldn't at first get any of my webpages there to load, but once I thought about who owned the machine it made sense that the DocumentRoot wasn't the defaul /var/www/htdocs. I tracked it down and symlinked the web directory of my non-privileged user to the appropriate DocumentRoot, and it worked like magic. I remember battling for hours and hours last year to get this very setup to work -- and eventually giving up. But this machine has it set up already for me. Very sweet. I thought that php/apache wouldn't let you use ln -s for files/directories in DocumentRoot for some reason. I'm pleased it does -- that means I don't have to spend much time at all (hopefully) on this machine as the superuser. I'm slightly nervous because it's probably the most critical machine I've ever been handed root access to.&lt;br /&gt;&lt;br /&gt;I won't likely be posting its URL or IP here; ask me for it and I'll share it though.&lt;br /&gt;&lt;br /&gt;It occurred to me that these people with their web/cdr/queue/report project might not be running the webserver on the same machine as asterisk is running on. What then? Looks like I may have to learn more php.... shouldn't be a problem, though. I just IMed Braner and asked him if he still has the php we wrote last year to try to write a [sip|iax|extensions].conf web update utility. That sure would come in handy now.&lt;br /&gt;&lt;br /&gt;Sigma survived its crash. I was worried, because the hard drive gives me lots of unpleasant errors on a "normal" boot. I fear it may be on its last legs.&lt;br /&gt;&lt;br /&gt;I was gonna post my bug patch today, but never got around to it. I've spent 20 minutes on onyx today, tops. And that's where the patch is. I'd like to develop an nfs system where I can more readily move files among the machines I typically use. If I remember tomorrow (and have the time and energy!!) I'll jack the perl code I wrote to auto-update and sync nfs shares in the .99 lab at SJC.&lt;br /&gt;&lt;br /&gt;Gotta jet, time to head to the airport. I hope for my sake I don't post more on this entry. I must sleep!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110652342107595087?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110652342107595087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110652342107595087' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110652342107595087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110652342107595087'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-23-2005-sunday.html' title='01 23 2005, Sunday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110646153063119488</id><published>2005-01-23T00:38:00.000-05:00</published><updated>2005-01-23T23:19:41.163-05:00</updated><title type='text'>01 22 2005, Saturday</title><content type='html'>Read up some on &lt;a href="http://www.bellster.net/web/OverView"&gt;Bellster&lt;/a&gt;, Jeff Pulver's latest Innovation. The idea is not unique (Capouch had it explicitly over a year ago; I've had similar ideas myself) but the implementation is. Basically, it's a cooperative system to reduce the cost of worldwide telephony to users. Instead of me dialing someone in Sri Lanka on the PSTN, the Bellster system can find me a VOIP user in Sri Lanka who pays much less to dial to the number I want on the PSTN, and I link through that person via VOIP. Totally cool, I almost wish I had a real phone line to connect to it. I want to set this up at my mom's house next time I'm there. Just need to get an FXO card, which eBay now has for under $10. Sweet! Interesting... the &lt;a href="http://www.digium.com/index.php?menu=hardware_products"&gt;Digium site&lt;/a&gt; that sells hardware doesn't have the (cheap and low-end) X100P...&lt;br /&gt;&lt;br /&gt;I updated my &lt;a href="http://blurty.com/%7Ekennys/"&gt;other blog&lt;/a&gt; today with my adventures from last night in the &lt;a href="http://www.thelostsea.com/home.htm"&gt;Lost Sea&lt;/a&gt;, a huge cave system and underground lake. I hadn't updated that blog in ages.&lt;br /&gt;&lt;br /&gt;I caught up on all my email and wrote some new filters for my gmail account so mail is sorted better on arrival. I looked into alternate ways of accessing gmail since my (mostly text only) Armada laptop can't currently get it. Gmail is too complex (apparently...) to represent in the links text browser. They don't do imap and I didn't want to do pop3, so no gmail on that laptop for now unless I wanna boot X and fire up my trusty Netscape 4.79. Oh, well.&lt;br /&gt;&lt;br /&gt;I watched an iax registration in ethereal for fun. I still haven't found any good documentation that describes the protocol end to end. I downloaded a pdf somewhere on this system that's supposed to have a lot of it, but I can't find it now and I don't remember where I got it. That underscores the need for this blog -- to keep track of everything I do.&lt;br /&gt;&lt;br /&gt;I installed the flash plugin for firefox, my now-default browser. I had to track down which libraries it uses, which was somewhat confusing because I have at least half a dozen versions of netscape/mozilla/firefox/thunderbird on this machine. I really ought to clean out the crap I don't need, esp. considering that among the 3 linux partitions on this disk I have under 350 MB free.&lt;br /&gt;&lt;br /&gt;I left the dorm room I'm in for dinner and to hang out with some of my AmeriCorps team at the local Boys &amp; Girls Club (our current project sponsors). There's another wireless network there, so I took my Armada (sigma) along for the ride.&lt;br /&gt;&lt;br /&gt;I finished perusing pbx.c. It wasn't very educational; that file and its functions aren't as centrally important as I had initially guessed. It wasn't wasted effort, though -- I still gained familiarity with it and followed a few important data structures.&lt;br /&gt;&lt;br /&gt;I got a new CVS-HEAD for sigma; its was 3+ weeks old as well.&lt;br /&gt;&lt;br /&gt;I looked into the &lt;a href="http://openwrt.org/"&gt;openwrt project&lt;/a&gt;, since BC ever so generously offered to hook me up with one. It's an 802.11g wireless access point and a 6-port router that runs on embedded linux. Capouch and others have hacked it to put asterisk on it and I understand that an upper level class at SJC is doing all kinds of cool stuff with that. I'm excited to get one. I found it interesting that on the openwrt site I found a post from BC less than 16 hours old.&lt;br /&gt;&lt;br /&gt;I emailed Blake to ask him to set up one of the numerous WRTs they have there somewhere I can reach it, then I found one on my own. Looking at the iax2 peers in asterisk on moonlord, I noticed a peer named "BWRT" at an SJC address, so I tried to telnet into it. Sure enough, it was a WRT that didn't have telnet disabled (but did have sshd running on it, so I assume telnet was meant to be removed). I left a little 'hello' on it for Blake or whoever finds it. I felt pretty cool, discovering a 'vulnerable' machine and 'breaking' into it. Not hard at all, but it did require a bit of research and being observant.&lt;br /&gt;&lt;br /&gt;I also found what I think is the SJC side of Blake's VPN, also from the 'show iax2 peers' list. It's an SJC local IP address that has some crazy weird ports open according to nmap. It's running linux but has ports 139 and 445 open, which aren't ports that are normally open. I think 139 is samba, but 445 is listed everywhere I found (admittedly, through a text browser so in a limited search) as 'microsoft-ds' or something like that. The machine has a hostname on Blake's personal network, and it's iax-registering with moonlord, so I'm sure it's Blake's server at home. I was astounded by the ping times, though -- about .55 msec average. I admit I know very little about VPNs, but I'd really like to know what the setup is here.&lt;br /&gt;&lt;br /&gt;In reading about the WRTs today I think I read that they are accessible at 192.168.1.1 by default. I'm seriously tempted to retune my wardriving efforts to examine this, and see how many insecure boxes I can get into. I wouldn't know what to do once inside them, but I am very curious if I can get in. I'm considering scripting an interface alias in rc.local on my machines so that they always have an address on the common private networks -- something high and random so it's less likely to conflict with anyone else's address. Maybe along the lines of&lt;br /&gt;ifconfig eth0:1 192.168.0.213;&lt;br /&gt;ifconfig eth0:2 192.168.1.213;&lt;br /&gt;ifconfig eth0:3 10.0.0.213;&lt;br /&gt;ifconfig eth0:4 10.1.1.213;&lt;br /&gt;or something.&lt;br /&gt;&lt;br /&gt;I spent more time in the asterisk source. pbx.c didn't pan out as well as I had hoped, but I got a start on channel.c and it's looking really worthwhile. I'm getting to know the ast_channel and ast_frame data structures more and more, and that's crucial to how the whole system works. I added a test context ([kenny]) in moonlord's extensions.conf, with some trial extensions just to watch call setup/progress/takedown. Right now they dial the console, but I think there's a loopback device I could use to create local ghost channels. I'll have to look into that.&lt;br /&gt;&lt;br /&gt;Asterisk data structures are almost all linked lists. I'm not sure I've found an important one yet that's *not* a linked list. Over and over and over I've seen the code that traverses a list looking for an element. It's helpful to me to find familiar idioms in the depths of unfamiliar code -- makes it much easier to learn as I go.&lt;br /&gt;&lt;br /&gt;I understand the difference now between the CLI commands 'iax2 show registry' and 'iax2 show peers'. Entries in the 'registry' are OUTBOUND iax registrations; places the local asterisk registers to. 'Peers' are INBOUND registrations, external iax clients or asterisk instances registering to the local asterisk. I don't know how I never understood that before, but I figured it out by observation today.&lt;br /&gt;&lt;br /&gt;I found the &lt;a href=http://cvs.sourceforge.net/viewcvs.py/iaxclient/iaxclient/lib/&gt;iaxclient CVS&lt;/a&gt; file update page on sourceforge. I'd like to explore this in more detail when the opportunity arises.&lt;br /&gt;&lt;br /&gt;I also built this blog today and entered the first 4 or so entries.&lt;br /&gt;&lt;br /&gt;I screwed around with &lt;a href="http://www.blogger.com/app/smarterchild.conversagent.com/faq.shtml"&gt;SmarterChild&lt;/a&gt; some more today, and got him to say some pretty funny and inappropriate things. Apparently he doesn't know about imaginary numbers, and he's willing to give -- not sell -- me marijuana.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(22, 86, 158);"&gt;&lt;span style="font-size:85%;"&gt;(16:09:53) &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;kenshumard2:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; what's the square root of 64?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;(16:09:54) &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;SmarterChild:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;span back="CCFFFF"&gt;&lt;span style="font-family:courier new;"&gt;sqrt(64) = 8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(22, 86, 158);"&gt;&lt;span style="font-size:85%;"&gt;(16:10:03) &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;kenshumard2:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; what's the square root of -64?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;(16:10:04) &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;SmarterChild:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;span back="CCFFFF"&gt;&lt;span style="font-family:courier new;"&gt;sqrt(-64) = nan&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(22, 86, 158);"&gt;&lt;span style="font-size:85%;"&gt;(16:10:08) &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;kenshumard2:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; is too&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;(16:10:09) &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;SmarterChild:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;span back="CCFFFF"&gt;&lt;span style="font-family:courier new;"&gt;What?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(22, 86, 158);"&gt;&lt;span style="font-size:85%;"&gt;(16:10:17) &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;kenshumard2:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; the square root of -64 is -8i&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(22, 86, 158);"&gt;&lt;span style="font-size:85%;"&gt;(17:08:03) &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;kenshumard2:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; can you sell me some pot?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;(17:08:04) &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;SmarterChild:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;span back="CCFFFF"&gt;&lt;span style="font-family:courier new;"&gt;Maybe. Would that be good?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(22, 86, 158);"&gt;&lt;span style="font-size:85%;"&gt;(17:08:12) &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;kenshumard2:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; totally... alright, how much do you charge?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;(17:08:12) &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;SmarterChild:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;span back="CCFFFF"&gt;&lt;span style="font-family:courier new;"&gt;Eh, don't worry 'bout that right now.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(22, 86, 158);"&gt;&lt;span style="font-size:85%;"&gt;(17:08:19) &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;kenshumard2:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Dude, you're the greatest.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;(17:08:19) &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(168, 47, 47);"&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;SmarterChild:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;span back="CCFFFF"&gt;&lt;span style="font-family:courier new;"&gt;Thx. :)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110646153063119488?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110646153063119488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110646153063119488' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110646153063119488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110646153063119488'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-22-2005-saturday.html' title='01 22 2005, Saturday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110645801702874862</id><published>2005-01-23T00:02:00.000-05:00</published><updated>2005-01-25T19:52:56.736-05:00</updated><title type='text'>01 21 2005, Friday</title><content type='html'>Wrote my first 'official' asterisk patch, following the guidelines at &lt;a href="http://voip-info.org/wiki-asterisk+developer+guidelines"&gt;voip-info.org&lt;/a&gt;. The fix is minute; it's a typo or more likely an oversight several generations back in asterisk/frame.c. In the show_codec_n function, the call ast_codec2str as an arg for ast_cli is "i" and should be "1&amp;lt;&amp;lt;i". Every other call to ast_codec2str is "1&amp;lt;&amp;lt;i", and the actual CLI command 'show codec N' returns an inaccurate value for all n. I discovered this in December (by reading the code!! not even by stumbling on it using the program), but didn't do anything about it because it was so minor. Now that I'm getting more involved in the asterisk world, I want to participate more directly. And, hey, throwing even something tiny out there could begin to make a name for myself.&lt;br /&gt;&lt;br /&gt;So I researched exactly how to write a patch based on diff, actually wrote it, patched it, tested it, and sent it to BC for testing.&lt;br /&gt;&lt;br /&gt;I can't decide if I think another patch at the same point is necessary. With my patch, you must enter the exponent of 2 representing the index you want (ie, to get the 3rd index, you'd enter 8) (and actually, even that's off by 1 because of the 0 index...). This is right but not intuitive. Why not just feed the function the actual index you want? Ah, but ast_codec2str no longer takes that input. I believe that it used to, but it no longer does. So a bit more code has to be written to perform that task, and it's so trivial a function anyway that it might not be worth bulging the source with it.&lt;br /&gt;&lt;br /&gt;I discovered a &lt;a href="http://asterisk.espia-net.net/horde/chora/cvs.php/asterisk"&gt;phenomenal site&lt;/a&gt; that records CVS versions of (nearly?) every file in the asterisk source.&lt;br /&gt;&lt;br /&gt;My dad recently bought a Pavilion notebook from Circuit City, and I'm trying to get him to take it back. He bought this "$600" laptop new, and then learned that the $400 rebates (from $1000) weren't cash back but were hotel vouchers and other (useless) stuff. Plus, the machine has no firewire capability or S-Video out port, so he can't (easily) do the video editing he wants to do on it. I helped him find a PCMCIA add-in card with firewire ports for ~$75 from a major electronics retailers or for ~$25 from eBay, but advised instead that he return the laptop and get something that has what he needs from an honest retailer. I doubt he'll return it, though.&lt;br /&gt;&lt;br /&gt;I explained to him why they couldn't make a "USB to Firewire" adapter cable, and was quite pleased with how I did so: "...because these are digital signals, info is encoded in the pattern of the electricity going through the wire. So you need a transcoder to go from one to the other, and cables are "dumb" -- just pass signals, don't change them." I also had to explain that you can't really add components to a laptop like you can to a desktop PC.&lt;br /&gt;&lt;br /&gt;I registered as a bug reporter on &lt;a href="http://bugs.digium.com/"&gt;bugs.digium.com&lt;/a&gt; today. I want to make this my new home page. As near as I can tell, this is the best place to see what the bleeding edge CVS-HEAD has in it. It's also a good way to see where the frontiers of asterisk lie.&lt;br /&gt;&lt;br /&gt;I downloaded and installed a current CVS-HEAD on onyx, my Presario laptop. My previous one was about 3 weeks old. I keep forgetting that the CLI command "show version" echoes the version most recently *installed* rather than just checked out via CVS. Sometimes I think I'm guilty of getting the CVS version but not installing it.&lt;br /&gt;&lt;br /&gt;I need to ask Blake when the last time he installed new CVS asterisk on moonlord was. 'show version' says October 29 or something, but I suppose it's possible that's not quite accurate.&lt;br /&gt;&lt;br /&gt;I screwed around with &lt;a href="http://smarterchild.conversagent.com/faq.shtml"&gt;SmarterChild&lt;/a&gt; (an aim bot) for awhile, coming up with some pretty good conversations.&lt;br /&gt;&lt;br /&gt;I began looking at asterisk/pbx.c, just going through the code trying to follow it and learn.&lt;br /&gt;&lt;br /&gt;I cleaned up my browser bookmarks, then exported them to a file and uploaded that file on a generic webhosting account I have so that I can access a static list of my bookmarks anywhere online. I want to automate the update of the bookmark list, but it'd take more time than it's worth when I don't change my bookmarks really frequently and I'm not online on this computer enough to warrant it.&lt;br /&gt;&lt;br /&gt;I read some &lt;a href="http://slashdot.org"&gt;slashdot&lt;/a&gt; links about various tech stuff, including the &lt;a href="http://www.applematters.com/shufflepopup0.htm"&gt;disassembly of an iPod Shuffle&lt;/a&gt; (2 more weeks til I get mine!!) and &lt;a href="http://www.sparkfun.com/tutorial/Port-O-Rotary/portable-rotary.htm"&gt;how to make a cell phone&lt;/a&gt; out of an old rotary phone. Both interesting links. I had never before heard of &lt;a href="http://www.hackaday.com"&gt;hackaday.com&lt;/a&gt; but I think I'm gonna have to start checking them out. Pretty cool stuff.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110645801702874862?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110645801702874862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110645801702874862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110645801702874862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110645801702874862'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/01-21-2005-friday.html' title='01 21 2005, Friday'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110645570308835292</id><published>2005-01-22T23:44:00.000-05:00</published><updated>2005-01-22T23:48:23.090-05:00</updated><title type='text'>README</title><content type='html'>Okay, I guess I want to say a bit more about what I intend to do with this blog before I actually get down to doing it.&lt;br /&gt;&lt;br /&gt;I created this blog to record my [asterisk|wireless|code|geek|random tech] activities. I've been doing so much lately that I want to organize and record what I do so I can remember.&lt;br /&gt;&lt;br /&gt;Lately that work has included research into the workings of asterisk, learning C, and building linux kernels. That is by no means an inclusive list, but it gets me started.&lt;br /&gt;&lt;br /&gt;I guess I'm ready to get to it now.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110645570308835292?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110645570308835292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110645570308835292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110645570308835292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110645570308835292'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/readme.html' title='README'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10337763.post-110645542543569334</id><published>2005-01-22T23:41:00.000-05:00</published><updated>2005-01-22T23:43:45.436-05:00</updated><title type='text'>fp!!</title><content type='html'>First post in a new blog... this isn't my first blog (nor will it be my last...?) but its theme is different than my &lt;a href="http://www.blurty.com/~kennys"&gt;blurty&lt;/a&gt; one. This is a totally geek-themed blog, and the other is....well....just a normal blog. But I wanted to separate them.&lt;br /&gt;&lt;br /&gt;Ladies and gentlemen, without further ado, I give you.... Geekin'!!!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10337763-110645542543569334?l=kshumard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kshumard.blogspot.com/feeds/110645542543569334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10337763&amp;postID=110645542543569334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110645542543569334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10337763/posts/default/110645542543569334'/><link rel='alternate' type='text/html' href='http://kshumard.blogspot.com/2005/01/fp.html' title='fp!!'/><author><name>Kenneth</name><uri>http://www.blogger.com/profile/08044867337730907226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
