Jeff Makes Software
The software musings of Jeff Putz
-
Yahoo says: No SOAP for you!
Yahoo's new Web service API is pretty cool, but they say they aren't supporting SOAP.
My first gut reaction was, "Lame!" But then I thought about it, and I guess it's not that a big deal. Let's face it, the XML exchange for something like getting search results isn't exactly complex. The only bummer is that lazy jerks like me can't pop in the WSDL and crank something out in five minutes.
I'd really like to see what MSN Search comes up with. Their results are still hit or miss, but the frequency of getting irrelevant results is dropping like crazy for me.
-
First time in an office in ten months
I started a one-month contract gig today, and it's the first time I've been in an actual office in about ten months. I agreed to take the gig because it's largely on my terms, and I still maintain a large degree of independence, aside from the fact that doing the work requires me to be there to interact with a very small team.
At first glance, I'm not sure if the project has a high chance of success, but since I'm not a stakeholder and it's so short-term, that doesn't really bother me. They understand that I have strong opinions and will give them if I think they're going to tank everything. They were so adamant about it being an at-will contract that it's good for both of us. If I don't like them, or they don't like me, either party can quit at any time. It's amazing how much more honest that seems to make everyone.
In the mean time, I need to finish up CliqueSite.Ads and get that out to the people that volunteered to test it (2 million impressions a day on crappy hardware, baby!), and some other little miscelaneous things. I also need to schedule my book launch party, although that might have to wait until April at this rate.
-
If you want help, start by helping yourself
I got an IM today from a guy trying to get POP Forums to work. At first he was just asking if I had the Visual Studio solution file to give him. I insisted he tell me what the problem was first, and after some coaxing, I finally got him to tell me about the error he was getting. One class or another was defined in more than one place, so I knew he obviously had the compiled assembly in there along side of the one he was compiling. Rookie mistake, no big deal. Everyone made it at one time or another.
Then nothing would happen, he'd only get empty UI. He again started asking me for a solution file. He was being persistant and kind of rude, but I told him to ditch the autoeventwireup="false" from the page, as I knew that was the problem. Again, rookie mistake, but also one mentioned in the readme.
Next he started getting an "object reference not set to an instance..." or something like that. I told him to fire up the debugger and see where it was happening. In the back of my mind, I think I already knew it was a missing element in web.config, but again he wanted me to do the work for him, and running the debugger wasn't an option for him. Maybe he didn't know how. Beats me.
Regardless, he then began telling me my install instructions suck and I have no pride in my product and whatever. What good is it if no one can use it, etc. I was more than a little taken aback, considering he got the code for free. I'll be the first to admit it's not something flawless, but a little basic ASP.NET knowledge should get you up and running pretty quickly. I get enough e-mail from people using it that thought install went pretty smooth, so I'm not inclined to think it's a lost cause.
I politely told him that he had a funny way of asking for help and that I was done talking to him.
As someone who has done a fair amount of training for other developers, even at the introductory level, I have a fair amount of patience for people who don't quite get it. Heck, that's why I wrote my book. However, the "teach a person to fish" metaphor certainly applies, and it's one I stick by. I've forged some really good relationships with people that want to learn and help themselves. I have literal tolerance for people that don't want to do the work though.
Anyway, speaking of the book, it looks like it will start shipping in less than two weeks, ready to ship to distributors on or around March 3. I'm really excited, as it will provide some much needed motivation and confidence. Please buy it. Tell a friend. :)
-
Weather.com still suX0rz teh big one!!!!11
I did give them a chance and send them feedback, but the crack monkeys at The Weather Channel still haven't fixed their site. My local page 90% of the time has some kind of HTML problem that prevents most of the page from displaying, including the ever critical radar.
The worst thing is that they have to be losing out on ad revenue, unless they don't actually have any way to audit what actually gets displayed. I'd be kind of irate if I was an advertiser.
What weather site do you use? One of our local TV stations has a fairly useful site.
-
Successful tweaking
Last night's tweak fest and refactoring yielded really significant results. As I mentioned, it was session capping ad delivery that was bringing me down, and I think I've resolved that issue. On my old cheap hardware I've been able to get an average of 1.5 million ad impressions per day under a simulated load. Disk isn't getting overwhelmed, CPU time is around 75%, and delivery is under 0.1 seconds. I could easily push it harder, probably to 2 million impressions per day.
I wish I could get my hands on some real hardware to see how it would perform!
I think there are a few more areas I can tweak. I'd like to get to 3 million impressions per day on my ghetto box.
-
Shameless plug: Looking for contract work
If anyone out there is looking for someone to do short-term .NET contract work, please drop me a line via the contact link at left. I'm pretty flexible as long as I can work electronically and don't have to move anywhere!
Jeff needs a little work to pay his taxes on time!
-
Performance tweaking is fun!
CliqueSite.Ads is coming along, finally. My intent to date has just been to make it work and perform well enough to meet my needs. It does that no problem, but I'm ready to really beat on it and tweak it a bit.
So far my biggest bottleneck is in checking for frequency and session capping. It drags down performance to about 20% of what it can do otherwise. I'm not surprised, really, because it's checking user data against the entire impression table. I'm not sure how I'm going to overcome that. I could do something in-memory for the session tracking, but then I couldn't use it in a farm. The overall frequency capping has to be in one place. Regardless, there's no reason in either case to have to do that count every time. I'll have to think about a faster way to profile users.
I like tweaking stuff and even refactoring big parts of an app to work faster. That explains why I briefly got addicted to overclocking my computer (before I realized that I was already getting framerates higher than my monitor could display in Doom 3).
-
Google: Doing evil?
There's a lot of noise over Google's new toolbar function that puts new links in pages for "relevant" information. While they (for the moment) indicate that it's mostly harmless in terms of what they want to link you to, it sure sounds like something that Microsoft caught a lot of crap for a few years ago. More to the point, as someone that makes 90% of his living from the sites he publishes, I'm not a big fan.
My biggest issue is that I've worked hard to keep people visiting my site, and hopefully even clicking on ads now and then. I've done a pretty good job of cultivating an audience that delivers a lot of impressions considering the relatively small potential audience overall. I don't want people to have a reason to go elsewhere. (For the record, I also have alternate means of revenue, including premium/subscription content.)
Of course this all comes to the age-old debate about who owns the bits after they come down the wire. I'm not naive enough to think that I should have full control of that content when it lands on the client, but I'm not going to side with the inevitable response from Google that will go something like, "It's good for our customers." (Where have we heard that before?)
It will be interesting to see how this pans out in the court of public opinion.
-
Gates interview with ABC News
I haven't seen this linked to elsewhere. A little deeper than the typical soundbite interview...
http://abcnews.go.com/WNT/story?id=506354&page=1
-
How do I find the application path in an HttpModule timer?
Here's a pickle (to me, anyway)... How do you determine an application's path from an HttpModule inside of a running timer? I tried the obvious by passing in the application context and looking it up from Request.ApplicationPath, but that works only when the app first starts (which makes sense since there is no request when the timer fires). Code looks something like this...
public class Module : IHttpModule
{
public void Init(HttpApplication application)
{
timer = new Timer(new TimerCallback(this.myMethod),
application.Context, TimeSpan.Zero, new TimeSpan(0, 15, 0));
}
static Timer timer;
private void myMethod(object sender)
{
// this works the first time, but not on subsequent calls
string path = ((HttpContext)sender).Request.ApplicationPath;
}
public void Dispose()
{
timer.Dispose();
}
}