dwink i owned a company and all i got was this stupid blog

20Dec/082

Being All Professional And Stuff

I spent some time updating my LinkedIn profile today. It's social networking for workaholics, but I suppose I have to admit that's what I am. When I think about what I'm going to do when I get a spare minute on the weekend, it's usually along the lines of experimenting with some technology -- which can then be applied to a problem I have at work. I love to tinker, to fiddle, and to poke, and the universe of things to play with is vast -- but my primary filter is whether I can use it at work the next week.

So I've spent some time with xlwt, which gives me a pure-python way to write out Excel-format spreadsheets. This is great stuff -- I've got a report right now which spits out CSV format, and when the users pop it open in Excel the default filter misinterprets some of the data, losing precision. This will let me give it to them in the proper format without the issue.

My other new favorite Python module is suds, which is a pure-python implementation of a SOAP library for web service clients. Point it at a WSDL, and you end up with a runtime-generated client for that web service, with a factory for WSDL-defined types and a simple, RPC-like API for the web service. I've been using it to pull down data from a SharePoint Web Service...that plus xlwt and I have a way to arbitrarily mashup Sharepoint data into nicely-formatted Excel sheets. If all works well, I should be able to generate my project management reports automatically, saving me hours of copy-paste-format operations in Excel.

Why do we use Excel for this crap? Well, as I've discovered, it's the one tool that's almost universally installed in finance companies. MS Project is second, but it's highly distrusted (and rightly so -- given the pace of our requirement/plan changes, I'd spend more time refactoring my project due to adjustments than I would actually doing the tasks on teh list!). Open source software? Forget it -- my manager teased me openly for trying to do these things in TaskJuggler ( though, I still think that package could work with a little data-gathering infrastructure ).

What I really want is project-management software that actually allows me to manage the project based on triggered inputs -- i.e. if each step of a project can automatically 'poke' an event into the system, and the system adjusts the final status/tasklist/etc. based on the events, then I can get a clear management report which allows me to think in terms of what things I need to change which then gives more events, which trickle back in to show me the result of the decisions.

Since it'd be event-based, it could keep complete revision history on events as well -- pointing back to the particular event which triggered the change in the plan/deliverable date/result/expectations.

That'd be sweet.

But I'm rambling.

Filed under: Drivel, Geeked 2 Comments
20May/080

Lenovo Y410….sound….again

There's something wonky going on here.

After my last post, I found that the 'benq' setup wasn't working for headphones, which is my primary use for sound on the lappy. So, I found another post which says that if you suspend and resume the laptop (Fn-F1), sound 'magically' starts to work. So I updated /etc/modprobe.d/alsa-base again, this time using the line:

options snd-hda-intel index=0 model=auto

Then I fired up amarok, muted the "Front" mixer control and am now happily listening to tunes via the headphones. I'll try again after rebooting and update -- hoping for a solution which Just Works.

Filed under: Geeked No Comments
11May/081

Update: Lenovo Y410

I upgraded to Kubutu Hardy Heron recently, and found that it's easier to get sound working on this lappy now.

You still need to use module-assistant to install alsa from source, and I'm finding that I still need to have

options snd-hda-intel index=0 probe_mask=1 model=benq

in my /etc/modprobe.d/alsa-base.

However, now sound seems to be more stable and you can control both the headphone and speaker levels independently in your mixer -- the "Front" channel for the speakers, the "Headphone" for the headphones.

Filed under: Geeked 1 Comment
10Feb/081

Lenovo 3000 Y410 Sound: ALSA 1.0.16 WORKS

I got one of this delightfully cheap-ass lappies for Christmas and installed Kubuntu on it. Unfortunately, sound has always been a sore spot -- my primary use for the lappy is on the train, so I need to use headphones and be able to mute the main speakers. While many folks figured out how to get sound working, none of the solutions seemed to be able to get the headphone jack going correctly.

So today, since ALSA 1.0.16 is officially out, I decided to upgrade and see what happened. Lo and behold, *everything* is working. I can:

  • Play sound through the Front speakers
  • Play sound through the headphones
  • Mute/unmute either front speakers or headphones
  • Record audio through the built-in mic
  • Play the captured audio

Not only that, but the auto-configuration stuff seems to be the best way to configure this. So if you install the latest ALSA and try this, make sure you remove any  "model=" options from your /etc/modprobe.d/alsa-base.

My guess is that any lappy with the Intel HDA hardware ( rev 03 ) and ALC262 codec will probably work like this. So enjoy, and thanks to the ALSA devs for getting this stuff figured out.

Filed under: Geeked 1 Comment
10Feb/081

Go Figure, Social Networking Gets Dull After Awhile

I was totally on board with the SixDegrees craze back in the day. And then Friendster. And then MySpace, which I tried and was bored with by 2005.

And then MySpace got a huge surge of popularity, and people created millions of profile pages with all sorts of snarky commentary and bulletin-board posts. They hacked their profile pages with backgrounds and (mostly annoying) music.

I admit, I went back and updated my profile, wondering if I'd meet any new or interesting people. And then I got bored.

Apparently, I'm not alone. 

But why? These communities have millions of members, nearly every kind of interest under the sun, and have  even spawned TV shows like Project: MyWorld where three unknown girls go and meet people they know from MySpace all over the world. Obviously there's a lot going on, so why would people back off from all of this?

Here's the thing: on MySpace, the point is to drive traffic to your profile. As a band, there's a benefit there: you want exposure. As a Regular Joe, you just want to keep in touch with your friends. Sure, you may find some friends you haven't seen in a long time, but once you've done that it's far simpler to just email and IM each other, and on those venues you don't have to wait for some crappy profile page to load, get bombarded with useless ads, and deal with friend requests from God-knows-who.

So. Me? You'll find me at the same place you've found me for years: my email and IM addresses. See ya there, it's the new-new-NEW thing.

Filed under: Drivel, Geeked 1 Comment
5Dec/070

The Shoulders Of Giants

Yesterday I took advantage of an opportunity to meet Scott Meyers and listen to him give a talk on one of his current pet projects, which involved the use of some creative C++ template meta-programming tricks to, as he put it, "generalize const".

The talk was a lot of fun for a number of things: one, it got me thinking about the continuum between a code segment's state of being ( having this feature ), through documenting that state as intentional (it *should* have this feature), to explicitly enforcing the requirement of that feature. Another was that it was very heartening to see the author of Effective C++ and Effective STL bang his brain against the complexity of Template Metaprogramming -- now I don't feel quite so bad when I'm digging in the bowels of boost::python or boost::mpl and end up staring at the screen and drooling -- Scott's been there too.

It also got me thinking about how iterative technology really is. Truly 'revolutionary' technology isn't technically revolutionary -- it's an incremental improvement from the previous technical iteration. What makes it revolutionary is what it enables in real life. I write code all the time that uses things like std::sort, which is a relatively simple thing in itself, but it depends upon all the other things -- the containers, the memory allocation, the memory manager, the bit order, the instruction set, and so on and so on down to the bare transistors simply behaving as expected. Good ol' std::sort wouldn't be very useful without that stuff -- and each of those things were minor revolutions of their times -- we've built on them and created meta-stuff, with meta-meta-stuff to specialize the meta-stuff.

So today I can do template magic to make the compiler do some extra work for me, and object-orientation to make my programs reflect the real world better, and I didn't have to figure out all the details of how to make those things happen. I just had to learn how the giants before me organized it so I can reuse it.

Someday, perhaps, something that I build will be like that for someone else, a problem that I poke and prod until I come up with a solution will become another std::sort for someone to grab onto and turn a task from impossible to possible, and from possible to simple.

Whenever that happens, though, it'll still be standing on the foundation laid by the giants who came before.

14Sep/070

NoMachine NX

Now, this is how a virtual desktop should be. Fast, responsive, fully-featured remote access with standard ssh as the transport. I am duly impressed.

I installed the NoMachine server packages on my desktop at home (Debian unstable) and grabbed the client packages for my desktop at work and my laptop. Even at the slower non-EVDO speeds on my wireless internet plan I can get a usable desktop -- full-screen, full-functionality. Over a fast link, it's almost indistinguishable from being on the box itself.

So, yeah. I give two thumbs up. Only one quibble: The Windows client doesn't seem to understand my dual-head setup and will only refresh the window on the primary screen. Odd.

Anyhow, hit up NoMachine and give it a try.

Filed under: Geeked No Comments
7Sep/070

It’s (mostly) the network

An anecdotal bit of evidence, which is interesting to me: when I commute to Chicago, riding Metra UP-West Line, with my EV-DO capable blackberry on Verizon, if I sit on the north side of the train, I get EV-DO speeds nearly the entire way to the city. If I sit on the south side, I get the slower "1x" rates.

Apparently even Verizon keeps the rivalry alive....

Filed under: Geeked No Comments
4Sep/072

Tethered BlackBerry With Ubuntu

I recently acquired a Blackberry 8703e with tethered internet access, and thought to myself how great it would be if I could use said tethered access from Linux.

Of course, when you're setting up something that isn't officially supported, you're likely to run into a few snags.

The first snag is: The 8703e doesn't expose its serial modem over USB without a handshake of some sort. Luckily for me, there's a brilliant guy who wrote a program to do it, called XmBlackBerry. You can grab it from Sourceforge.

The next snag is: XmBlackBerry uses OpenMotif 2.3. Ubuntu Feisty Fawn comes with 2.2. So, I grabbed the tarball from MotifZone, built it a nd installed it. I put it out in /usr/local so that I wouldn't have to worry about the ubuntu packages freaking out over the different motif versions.

OK. So I can start up the program, it notices the blackberry, and I symlink the new pts ( /dev/pts/X ) to /dev/modem so that I don't have to change the config each connect.

Now I fire up kppp (yeah, I could be a real geek and set up pppd directly, but kppp gives me a lovely little gui I can minimize to my panel and all that happy user-friendly goodness.) and punch in the settings. Unfortunately, though, the kppp default settings for pppd require LCP echoes to be responded to in a reasonable manner. Turn that off (lcp-echo-interval 0 ), and voila! We are connected!

Filed under: Geeked 2 Comments