Showing posts with label dotnet. Show all posts
Showing posts with label dotnet. Show all posts

Monday, February 22

My First Google Buzz App: Who gives a frak?

Subhead: My impression of Google Buzz/the Google Buzz "API."



As most are probably aware, Google Buzz recently launched, while with much less fanfare than the anti-climactic and rather disappointingly immature, but retaining potential, Google Wave, still plenty of hype, noise and clamor.

OK, Google Buzz itself is decent. Nothing super special, but it has potential. Aggregation can make my life easier in various projects. I'm not wowed by it, but, without having had anything in the way of expectations, I'm not disappointed, either.

Now, on the API side ... WHAT API!? There's really not a whole lot of programming to do against Google Buzz yet. Users can associate various accounts for aggregation from other well-known social media services, and Google Buzz provides some XFN markup for non-standard content or services to enable custom associations:

<link rel="me" type="text/html" href="http://www.google.com/profiles/your.username"/>

As far as I can tell, though I'll grant you my weekend was spent on the output side of Buzz and not so much the input, the only way to get content into Google Buzz right now is by an associated service or feed -- which can include your own RSS or ATOM feed, but you can't directly post an update to Google Buzz via API.

On the consumer side, you can pull a user's Buzz updates as ATOM using:

http://buzz.googleapis.com/feeds/{33-digit profile ID}/public/posted "ugly URL"

(You are supposed to be able to use your username, i.e. andrew.badera, instead of that 33-digit profile ID but apparently those so-called "friendly URLs" aren't pushing updates as properly or completely to the hub as the ugly URL-based subscriptions.)

You can subscribe to push notifications of a user's feed via pubsubhubbub.appspot.com. I didn't spend a ton of time digging, but in what time I did spend, I didn't find a .NET PubSubHubbub client subscriber or push notification callback handler floating around the internets. I've written a C# subscriber utility and an ASP.NET .ASHX handler for subscription verification and push callback receipt and handling which I'll be posting later today after hosting it somewhere like Google Code.

So far, Google Buzz and its API seem like Just Another Aggregator. Yes, the PubSubHubbub protocol is pretty freakin' cool, and, at least for now, seems highly responsive when it comes to subscription requests and push deliveries. I'm not yet sure however what's going to entice mainstream social network users to make the leap to Buzz. I'm compelled for business purposes, not personal, and social networking apps don't make the leap without personal engagement and enthusiasm.

Tuesday, October 13

Google Groups Spammed & Spoofed

Someone used a paid relay service to send a blast of spam mail to Google Groups today, including an email to DotNetDevelopment forged to look like it was from me, and one to the Twitter development list from Abraham Williams. I wonder if I can tighten up my SPF records further ...

Note:

"node67-rs.smtp.com is a paid relay service. We do not tolerate UCE of any kind. Please report it ASAP to abuse@smtp.com"

Reported! Too bad they're sloppy enough to either take on a paying scammer, or allow their server(s) to be compromised.

Entire original header below:

Received: by 10.204.57.197 with SMTP id d5cs159454bkh;
Tue, 13 Oct 2009 05:46:41 -0700 (PDT)
Received: by 10.224.36.161 with SMTP id t33mr5712657qad.346.1255437999331;
Tue, 13 Oct 2009 05:46:39 -0700 (PDT)
Return-Path:

Received: from mail-yw0-f143.google.com (mail-yw0-f143.google.com [209.85.211.143])
by mx.google.com with ESMTP id 16si5931388qyk.49.2009.10.13.05.46.37;
Tue, 13 Oct 2009 05:46:38 -0700 (PDT)
Received-SPF: pass (google.com: domain of grbounce-CXXeHAUAAABT6iFcnV0tp2J8uwopwMrD=[name]=[mydomain]@googlegroups.com designates 209.85.211.143 as permitted sender) client-ip=209.85.211.143;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of grbounce-CXXeHAUAAABT6iFcnV0tp2J8uwopwMrD=[name]=[mydomain]@googlegroups.com designates 209.85.211.143 as permitted sender) smtp.mail=grbounce-CXXeHAUAAABT6iFcnV0tp2J8uwopwMrD=[name]=[mydomain]@googlegroups.com; dkim=pass (test mode) header.i=@googlegroups.com
Received: by ywh7 with SMTP id 7so11775014ywh.23
for <[name]@[mydomain]>; Tue, 13 Oct 2009 05:44:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=googlegroups.com; s=beta;
h=domainkey-signature:received:received:x-sender:x-apparently-to
:received:received:received:received-spf:received
:x-smtpcom-spam-policy:x-smtpcom-sender-id:x-smtpcom-tracking-number
:mime-version:from:reply-to:to:subject:content-type
:content-transfer-encoding:x-mailer:date:message-id:sender
:precedence:x-google-loop:mailing-list:list-id:list-post:list-help
:list-unsubscribe:x-beenthere-env:x-beenthere;
bh=v/3cjxr9yNnnn8YzYMWt3Zb3yFtZ6fg/QPjQ6F00xzU=;
b=f8zONo+Nd2OiMZboovaizKOIB3KdTwU639muyNz845TznnqnCLIFSbJBB8X9/tVaSP
SJXpcLquG3LMNCzwhNlwtxheFIo1gPaAqrBkoehXE5H6eVLh/lOUMazqBTVWITP+RN0p
QYspurQzDOcCZyOyToKh14c+5t9Y8jzYfDPS8=
DomainKey-Signature: a=rsa-sha1; c=nofws;
d=googlegroups.com; s=beta;
h=x-sender:x-apparently-to:received-spf:authentication-results
:x-smtpcom-spam-policy:x-smtpcom-sender-id:x-smtpcom-tracking-number
:mime-version:from:reply-to:to:subject:content-type
:content-transfer-encoding:x-mailer:date:message-id:sender
:precedence:x-google-loop:mailing-list:list-id:list-post:list-help
:list-unsubscribe:x-beenthere-env:x-beenthere;
b=OdKVMgfgp0pSRBItb7s3AarQySGe3257BGdagGxmJ32sNCqC0EX3btfyBksKm3CKzB
+5rU+D4gFe8kxK7g3JvgJ3JHoimWFXHOL2c47ftI9iHPwjsHErQysprNE05keLcSovWo
NXkulIIxbH0hk9X4T6okRCjxYagz2g09IJpzQ=
Received: by 10.224.124.213 with SMTP id v21mr334295qar.44.1255437890651;
Tue, 13 Oct 2009 05:44:50 -0700 (PDT)
Received: by 10.176.233.14 with SMTP id f14gr43027yqh.0;
Tue, 13 Oct 2009 05:44:41 -0700 (PDT)
X-Sender: [name]@[mydomain]
X-Apparently-To: dotnetdevelopment@googlegroups.com
Received: by 10.224.95.213 with SMTP id e21mr1582186qan.0.1255437857334; Tue, 13 Oct 2009 05:44:17 -0700 (PDT)
Received: by 10.224.95.213 with SMTP id e21mr1582185qan.0.1255437857289; Tue, 13 Oct 2009 05:44:17 -0700 (PDT)
Return-Path: <[name]@[mydomain]>
Received: from node67-rs.smtp.com (node67-rs.smtp.com [74.205.51.67]) by gmr-mx.google.com with ESMTP id 18si409687ywh.13.2009.10.13.05.44.17; Tue, 13 Oct 2009 05:44:17 -0700 (PDT)
Received-SPF: neutral (google.com: 74.205.51.67 is neither permitted nor denied by best guess record for domain of [name]@[mydomain]) client-ip=74.205.51.67;
Received: from 41.248.202.187 (unknown [41.248.202.187]) by node67-rs.smtp.com (Postfix) with ESMTPA id D31FA2B0529 for
; Tue, 13 Oct 2009 08:44:15 -0400 (EDT)
X-SMTPCOM-Spam-Policy: node67-rs.smtp.com is a paid relay service. We do not tolerate UCE of any kind. Please report it ASAP to abuse@smtp.com
X-SMTPCOM-Sender-ID: 2367
X-SMTPCOM-Tracking-Number: 71882385
MIME-Version: 1.0
From: "Forum" <[name]@[mydomain]>
Reply-To: dotnetdevelopment@googlegroups.com
To: dotnetdevelopment@googlegroups.com
Subject: [DotNetDevelopment] How To Unlock Locked iPod
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Mailer: SendBlaster.1.6.2
Date: Tue, 13 Oct 2009 12:44:09 +0200
Message-ID: <386066006496256206824@sweet-a0aa22526>
Sender: dotnetdevelopment@googlegroups.com
Precedence: bulk
X-Google-Loop: groups
Mailing-List: list dotnetdevelopment@googlegroups.com;
contact dotnetdevelopment+owner@googlegroups.com
List-Id:

List-Post:

List-Help:

List-Unsubscribe:
,

X-BeenThere-Env: dotnetdevelopment@googlegroups.com
X-BeenThere: dotnetdevelopment@googlegroups.com

Monday, June 8

I've become a believer

In LINQ. Well, at least in LINQ to SQL, and some of the neat LINQ-to projects like LINQ to flickr and those sorts.

I'm not quite so sure about LINQ to XML -- I still find myself using a lot of XPath, which I thought LINQ would let me get away from. Sure, LINQ to XML is nice for WRITING XML, but reading? I'm not sure it's a big win.

But let's get back to the subject at hand: LINQ to SQL. For quite some time, I felt that LINQ to SQL reduced developer knowledge of the data model below acceptable levels, provided a nearly unnecessary level of abstraction, and coddled the drag-and-drop Mort crowd.

Some of that may still be true, but when building a quick system like one project I've been working on the past three or four weeks and another the past five days, LINQ to SQL, in my mind, gives .NET the feel of something more dynamic like PHP or Ruby. This reduces development pain on short projects, mockups/prototypes or architectural spikes IMMENSELY. You can be much more agile in evolving your data model and business logic without paying the price of a brittle, static data tier. Yes, I found myself dragging-and-dropping tables, over and over again -- and I felt almost no shame in doing so.

According to Microsoft, LINQ takes measures against SQL injection -- one of the topmost reasons for using stored procedures. One of the other big reasons for SQL Server stored procs is performance of course. On small datasets, performance is adequate. I haven't had a chance to test on large datasets yet, or under scale conditions. There are steps you can take to improve performance I plan on exploring.

But of course you can still use stored procedures with LINQ, dragging-and-dropping again, and calling them like a standard .NET method via the wrapper LINQ and the Entity Framework create.

I'm not sure you lose anything with LINQ, and you certainly gain quite a bit in a number of scenarios. I suspect I will be using it quite frequently in the future.

Sunday, November 16

Brian Peek @ TVUG: Animated Musical Holiday Lights

Brian Peek, Microsoft MVP, book author and writer at Coding4Fun, will be presenting a how-to on "Animated Musical Holiday Lights" this Tuesday, November 18th, at 6:30PM at Tech Valley .NET User Group (TVUG).
  • Abstract: This month, learn how to build an animated light show set to music, much like the famous holiday light show videos you may have seen on YouTube. This session will cover how to build the hardware, how to build the software, and how to combine them to create a synchronized musical show for your home.
  • When: Tuesday November 18th, 2008 - 6:30-9PM
  • Where: VersaTrans Solutions, Latham, NY


VersaTrans:

View Larger Map

Thursday, May 8

This is a test. You can ignore it.

I recently started posting my blog to my corporate site. However, not every opinion I express is necessarily one of a relevant and/or business-like nature, so while widgetizing the ATOM 1.0 feed-consuming blog code, I decided to add tag-based filtering. Only blog posts I tag as "hes" should end up the company page.

So, here goes the first test. Will the widget behave?

Widget source will be published once testing is complete. Widget uses .NET 3.5, ServiceModel.Syndication namespace. Highly configurable, with caching options (particularly handy when your site is subject to security scanning tools, which can cause feed providers like FeedBurner to label repeated feed requests as malware or bot. Thanks, Nanny Google.)

Widget can be deployed in multiple independent instances throughout site, so you could use a single blog with a number of different tags to publish area-specific content across your site by associating tags with those areas. Kind of a weak CMS (content or knowledge management system) taxonomy. Could possibly use it to auto-associate related blog posts as well.

UPDATE: It appears as though the tag-based filtering is working appropriately :)

Monday, March 31

I need a new Windows Mobile phone

My three?! year old Cingular 8125/HTC Wizard seems to be on its last legs -- hardware issues, no amount of re-ROMming makes it better.

I want another Windows Mobile phone I can hack away at and run my own .NET code on -- this is as much a learning and demonstration tool as anything else. Heck, I hardly ever use any minutes on my phone, but that's beside the point ...

The TyTn II is nice, but a little bit more than I'd like to spend right now. And I'm not sure I trust HTC hardware, especially with the TyTn's missing driver issue. The Samsung Blackjack II was recommended to me by Kris over at Smartphonethoughts.com ... it seems like a solid candidate. $300 or so retail, WM6, GPS ...



Thoughts, other suggestions, welcome! Thanks in advance!

Wednesday, February 27

Windows 2008 due to launch today

Windows 2008 - a look at Server Core

I've played with the 2008 betas -- pretty sweet -- but I hadn't bothered to play with Server Core specifically.

Until I can run ASP.NET on Server Core, I probably won't bother. And even then, I suspect it will never be much more than a VM on my fullblown 2008 machine.

Now if only I could get a copy of SP1 for my Vista machines that is guaranteed to NOT brick my notebooks.

Friday, February 22

First official sponsor of Tech Valley Code Camp

ActiveHost

Schenectady-based ActiveHost has agreed, per CEO Alex Finn, via Client Relations Manager Mitch Messmore, to donate hosting services for the Tech Valley Code Camp site I hope to erect (using Lorin's CodeCamp Site) this weekend.

Thanks ActiveHost, Mitch and Alex!

Tuesday, February 19

Microsoft To Give Students Dev Software For Free

Microsoft To Give Students Dev Software For Free

Why weren't they doing this when I was a poor 18YO freshman?

Sure, they had "academic" rates -- but $40 or $60, even for a piece of $300+ software, is still a big chunk of change for someone unemployed, or underemployed.

As a primarily Microsoft developer, I think this is great for students.

Is it Microsoft making further efforts at marketing to students? No doubt about it. I still think it's a good thing for students -- run Linux, run Windows, get to know Eclipse, get to know Visual Studio, get to know MySQL, get to know Oracle, get to know SQL Server, get to know whatever you get your hands on, because in software engineering, experience is your true education.