MacBook, defective by design banner

title:
Put the knife down and take a green herb, dude.


descrip:

One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for www.myfreakinfirst-andlast-name.com

Using 89% of the same design the blog had in 2001.

FOR ENTERTAINMENT PURPOSES ONLY!!!
Back-up your data and, when you bike, always wear white.
x

MarkUpDown is the best Markdown editor for professionals on Windows 10.

It includes two-pane live preview, in-app uploads to imgur for image hosting, and MultiMarkdown table support.

Features you won't find anywhere else include...

You've wasted more than $15 of your time looking for a great Markdown editor.

Stop looking. MarkUpDown is the app you're looking for.

Learn more or head over to the 'Store now!

Thursday, January 30, 2014

Lots of pixels being spilt about Google selling off Motorola. I'll credit Gruber for linking to one of the two intelligent pieces I've seen on this so far, de la Merced's piece on DealBook:

Breaking down the admittedly messy math shows that Google didn’t exactly lose nearly $10 billion on the deal. Here are some back of the envelope calculations.

When Google bought Motorola, the hardware maker had about $3 billion in cash on hand and nearly $1 billion in tax credits. So that brings the original deal’s effective price down to about $8.5 billion.

Then, Google sold Motorola’s set-top box business to Arris for nearly $2.4 billion. That lowers the effective price to roughly $6.1 billion.

Now, Google is selling Motorola Mobility — primarily the handset business, along with a few patents — for $2.9 billion. So we’re at about $3.2 billion.

It’s worth noting a few more things. In a regulatory filing in 2012, Google disclosed that it valued Motorola’s overall “patents and developed technology” at about $5.5 billion.

I mean, heck, what did Google want? Patents. Got 'em. Maybe they're worth what they hoped, maybe (probably) not. But that's what Google paid for.

What else did they get? They got the cash and credit that came with Motorola. They got more cash for selling off the "set-top business". Now they're getting cash for the phone hardware side, which isn't Google's thing anyway, as, in the other sensible piece I've seen, Ben Thompson points out.

Thompson also guesses another billion+ benefit of Motorola's use as a bargaining chip with Samsung:

Google likely offered to get out of hardware if Samsung cross-licensed their patents and stopped pseudo-forking Android. Given Samsung’s dominant position in the Android ecosystem, the Motorola bargaining chip very well may have been worth several billion dollars.

This is, of course, the limitation of concocting an open source replacement to a dominant closed-source arena: Anyone can use your work to get a running start to compete with you. It's a brilliant leverage play to use open source -- like AOL did with Gecko just long enough to get Microsoft to license IE back to them more favorably.

But if Samsung forked Android, if they played software the way Google-Motorola was playing hardware, they'd create a dominant fork that threatens to eclipse Google. And that would mean that Samsung would be in a position to start moving the inertia of the baked-in Google provided services to someone else, like Apple has with Wolfram|Alpha and Siri or Yahoo and weather.  Samsung could start making those same changes if they forked Android seriously enough.

Google is trying to commoditize the OS for services. Samsung is trying to commoditize the OS for hardware. They're a Reese's Cup where the peanut butter thinks it's better than the chocolate -- or vice versa.  I'm not sure.

Regardless, when you use open source for your OS, you open yourself up to shake-downs. This is a complicated enough matter I'd have to deal with it in another post, but if Thompson's right, this was a billion dollar shake-down from Samsung, and I wonder how much silence the payment bought.

It's the enterprise, stupid

What else did Google get? I'd point out one more small benefit: They redirected Motorola's phone lineup. The now overplayed official Google post on this says:

[Motorola has] focused on building a smaller number of great (and great value) smartphones that consumers love. Both the Moto G and the Moto X are doing really well, and I’m very excited about the smartphone lineup for 2014.

(I should also say that I'm now past conceptually impressed with Google's reach, and now practically convinced of their power. How did I learn about their deal with Lenovo? Their blog. And that popped up a long time before I read it anywhere else. They controlled the message absolutely, from keeping it a secret to my first impressions once it was known. Scary.)

The key here is not that you can customize Moto X out the wahzoo. It's that the lineup is slim and trim and ready to be redesigned. It's like a Marlins' fire sale after winning a World Series, or the NFL franchise in DC after Schottenheimer cleared all their expensive players to get them under the cap, or when the Bulls trade for Andrew Bynum and immediately waive him, just to clear that salary space for rebuilding next year. Hey Lenovo, take these two quality phones wherever you want! We've already cleared the chaff. It's ready for you to shape as you will.

This is just business as usual folks. Again, you can argue that they didn't get their dollar's worth for the patents, but I don't think any of us armchair analysts have enough context to make that call.

What they have done is get and keep useful patents, sell off useless bits of their conquest, potentially head off a major fork of Android, and reroute the energy of a streamlined phone lineup right into the most competent enterprise hardware manufacturer and marketer in the business. Lenovo's poised to be the next Blackberry, and Google's positioned to have Android [sic!] running there.

Don't gloat, Apple fans. Be impressed.

Labels: ,


posted by ruffin at 1/30/2014 09:37:00 AM
0 comments
Wednesday, January 29, 2014

It's a first world problem, I know.  I have a great computer that comes with a built-in monitor that'd run me no less than $450 if I bought it separately at Newegg.  But I have several computers I like to use at my desk, and the limitations of Target Display Mode, the feature that allows you to use your iMac as a monitor with other computers, really stink.

In a nutshell, my $450 monitor only works with Thunderbolt outputs.  I knew that going in, and even debated grabbing an older iMac (a Mid 2010) that supported DisplayPort input with Target Display Mode. It was too expensive for the hardware concessions I'd have to make.

The thing I greatly undervalued was how difficult it'd be to move the danged iMac out of the way if it wasn't VESA mounted.  The iMac is huge.  I have a KVM and another HDMI multiswitch to hook my Windows laptops (one each for my day and "night" jobs) up to two external monitors via docks, and there simply isn't space to configure them open in front of the iMac and still use an ergonomic keyboard.  And I don't know of another way to get a temporary Windows screen in front of me with the space I've got.

That is, there's no way for the iMac to share center stage with one of those two monitors.  And the iMac needs to have center stage, or I have my far and away best monitor off to the side when I use OS X -- like I'm painfully doing now.

Again, first world problem, but I do, thankfully, work in the first world, and having an efficient office is pretty high on the priority list.  I think the bottom line is that, when computers are your livelihood and you can afford it, it's likely worth shelling out for what you want, without compromise.  You know what you can use.  I wanted a Mac Pro.  That's insanely expensive, but fits in with my workflow perfectly.  I don't think I would have begrudged myself the extra $1500, but even if I had, the only pain is cost, not operation.  And you're buying yourself exceptional GPUs and the ability to upgrade the processor, insane amounts of RAM, SSD (which I don't have now), and the ability to drive a 4K monitor in the future.  That's a 4-5 year machine.

I also considered a 15" Macbook Pro Retina with a quad core -- $500-$600 more than the iMac.  I decided against that because I'd recently purchased a [Windows] laptop.  I don't think I'd've felt as badly hooking up a Macbook on the side, even though it has an arguably better screen than the iMac and, well, I'd have mobile OS X, which I only have in a white Late 2009 Macbook now.

I talked myself into an iMac based on its max RAM (so a win over the Macbook) and processor performance (which meant no mini -- and if I get exceptionally brave, I can upgrade my iMac's proc too, apparently, not that there are many options), sure, but also considerably on the monitor that I'd be getting.  It'd be fine if I simply had to turn it off to use my laptops.  It's another when it can't be my main monitor when I am OS X-ing without a lot of shuffling.

I'm not convinced I made the wrong decision, but I do regret the hamstringing and the imperfect workflow integration.  Reminds me of my iPod touch with its case not being able to access the swipe-up control center.  Apple makes decisions not to cater to as many users as possible, but to cater only for the Ideal Mac User, who not only doesn't use Windows laptops, where a Thunderbolt out is a near unicorn level rarity, but doesn't use older Mac laptops either.  It's not like Apple couldn't put some hardware in the iMac to decode DisplayPort in to Thunderbolt, or sell us an (exceptionally expensive, chip-powered) adapter.

So I'm stuck feeling stupid for having put back up my 1920x1080 Hannspree cheapie where the iMac used to be.  Wow, step down.

Labels: ,


posted by ruffin at 1/29/2014 08:52:00 AM
0 comments
Tuesday, January 28, 2014

When to use NHibernate | Jimmy Bogard's Blog:

But, if you draw your DDD bounded contexts well, you’ll find you need a lot less Big Bad Frameworks to get things done.

+1  This man's got it.

I'm adding a field to an insanely overly nested page in our .NET MVC system right now, and I'm having to edit, sheesh, I don't even know yet, maybe 8 files to expose it to our View?  I've got five levels of ascx files, about the same level of DTOs on the data pull side, and another set of nested files to access the ViewModels based on those DTOs. So I'm bucket brigading the field through the DTOs and AutoMappers until it hits the equally well nested ViewModel hierarchy, then traveling down our only slightly less layered ascx/View model to support it.

Or I could have added one extra field in a SQL statement (which could easily be a sproc) returning a DataTable, and I'd've been done.  I understand ORMs can be useful when preserving relationships programmatically, but is it worth the two three days I wasted learning our matryoshka doll data marshaling system?  Do we really do anything where that level of inter-entity manipulation occurs?  Hint: No.  The update calls are all pretty easy, since we're just updating one of the nested entities at a time, for the most part.  Send up an id and new values and poof.  No complex relationship management needed.

Hyper-monolithic [sic] pulls to modular puts makes myfreakinname something something.

Don't mind if I do.

Edit: I'm not alone.

SamSaffron.com:

You give the ORM a query, it builds SQL out of it, then it constructs a DynamicMethod to materialize data coming back from SQL into your business objects. I am not privy to the exact implementation, it may be including more or less work in these dynamic methods.

This implementation is an abstraction, and it leaks. It leaks performance, you give up some control over the queries you can run and have to deal with a LEFT JOIN syntax that is so crazy it can make grown men cry.

Or this "article" from CodeProject, which also later talks about Saffron's Dapper.NET, which the above link eventually gets back around to.

Over the years, I've seen several object-relational-mappers (ORMs) come along for .NET and always ultimately end up being somewhat disappointed with the end result. I remember seeing a preview of LINQ-to-SQL being absolutely blown away by the speed and ease with which you could generate code which would manage the movement of data between your relational database and your business object model. And all without having to hand-roll any SQL! A little later, it was Entity Framework which, at the time at least, seemed to be like LINQ-to-SQL but even better!

However, the time eventually came when I had to use some of these technologies in real-world development projects and it was then that some of their limitations became apparent. From cumbersome XML definition files to sub-optimal performance, I have spent so much time implementing 'fixes' and 'workarounds' to try and shoe-horn a framework into a project's architecture and get it to perform the way I want, that now (unless it is a very simple 1-tier application that needs to be developed rapidly), I prefer to go back to using the stalwart ADO.NET classes of yesteryear, as they offer the flexibility and control over my data access layer that I often find is taken away from me when using some of these ORMs.

I think I do this lamenting every three or four months.  I'm sure I've blogged about it before.  AAtF (Apologies After the Fact, natch).

Labels:


posted by ruffin at 1/28/2014 06:10:00 PM
0 comments

Delete your Buzz archive pdf from Google Plus:
Recently, I happened to see my Google Profile which had a section “Contributor To” and under which, was a link with “Buzz(current)”. When I clicked on the link, my browser downloaded a PDF which had all my buzz conversations! Oops, I did not expect that, even-though I was not a active Buzz contributor!

Good to know I'm not going crazy.  I went into my Google+ profile today to see why I can't get google.com/+MyName as my URL, since nobody else is actively using it, and caught that I'm a contributor to this blog and... Google Buzz?


I occasionally slap stuff on Google+, mostly because I don't want to spam Facebook (why I worry, I don't know.  Everyone else spams away...), and I guess I started back when Buzz was still around.  There are a few quick posts on there, one that gave me a quick chuckle.


But what a weird way to kill/continue the service.  Seems it'd be cheaper (b/c smaller) to save a static html copy of your Buzz page, and even smarter just to email you a copy.  But I guess the pdf is more preservation-oriented, so no update headaches for Google later.  Strange that it seems to be public.  I mean, I get it.  Buzz was, so this is.  Wonder why the posts weren't just moved to Google+?


In any event, we all know we'd never want to lose those posts from those 22 sweet months of digital bliss (I kid, Hasselhoff, I kid).

Labels: ,


posted by ruffin at 1/28/2014 08:44:00 AM
0 comments
Saturday, January 25, 2014

Windows Phone Mango Local Database(SQL CE): Introduction | GeekChamp:
LINQ is used to query data, T-SQL queries are not supported

I've already complained about the lack of DataTables on Windows Phone 8.  That still boggles my mind.  Why not make code supra easy to port over to Windows Phone?  When it's easier to reuse my C# code on iOS and Android ($300 a piece and I'm ready to go) than on Windows' own native platforms, something's wrong.

And then I see alternatives like the one above.  Admittedly, that article is pretty old, and mentions WP 7.1, but the use of LINQ exclusively instead of supporting SQL I don't quite understand.

I mean, I know ORMs are the [conventional] way to do things now.  But even they, at least on your standard server-side or desktop stacks, usually end up translating object relations to SQL.  I haven't seen a huge practical advantage for ORMs on the systems I've worked on.  I keep hearing that it makes swapping database engines easier, but I'll keep ignoring that until someone actually replaces SQL Server with PostgreSQL -- and it's painless enough to make up for carrying, eg, NHibernate around for years.

It's really not that all difficult to custom hydrate objects with SQL results, and when it is, you often run into similar trouble trying to shoehorn your data into your ORM via AutoMapper or something similar anyhow.  And in most of those complex cases, it would be much easier for those who know how to do just a little bit more than spell "SQL" to have scripted up a sproc to do what the ORM is doing -- and to have that logic processed on the database server, where it's supposed to be happening anyhow.  I'm almost speechless at this point.  I mean, you're paying how much to have software (the rdbms, to be clear) that's designed to handle complex relationships quickly and efficiently?  Quickly processing complex relationships in your data is your database server's job.  Why do we push that to middleware?

Sorry.  I'll try not to step so close to that soapbox again, as it's horribly difficult not to step up off of Britannia and start spewing.

Anyhow, this convention of object-ing your way to data rather than SQLing your way has gone from convention to serious technical block with Windows Phone.  I don't see how Xamarin abstracts twice -- once from whatever XCode is pushing out to Objective-C or Eclipse to a Java VM, and then again to C# -- on a platform that dips as low, performance-wise, as Android can, and still gives a more fully fledged development platform than Windows Phone.  I mean, heck, VB.NET was a non-trivial attempt to pull VB6 programmers onto the web and OO programming with the least amount of head rethreading possible, and it happened because having Microsoft stack developers on .NET was crucial to that platform's success.  Why the huge investment during the move to .NET but not Windows Phone and "Metro"/Windows App Store?  One platform has been adopted very quickly.  I realize the WP numbers are low, but don't you think some developer love would push adoption in business pretty danged quickly too?  It's all about the barriers to entry, stupid.

Guess this stayed a pretty ranty post.  Sorry.

Anyhow, so my answer so far, since my mobile apps are just for fun, is to create a DataTable shim for Windows Phone, DataTableWP8, that shims just enough to let me use my buggy SQL database, now called SqlDbSharp (because naming is difficult ;^D), on WP8 without rewriting anything.  So far, it's still fun to do, and I've been playing with Visual Studio on my Lenovo laptop as much or more as Xamarin Studio on my new iMac in my free time this week.

Labels: , , , , ,


posted by ruffin at 1/25/2014 02:37:00 PM
0 comments
Tuesday, January 21, 2014

Wanted a new Mac Pro. Talked myself down to a refurbed Late 2013 27" iMac. It sounds great.  As in literally, the music coming out of it sounds great.  I'm not sure I've gotten an iMac since the lamp post, which also had great speakers.  They really know how to design these things.

More importantly, most of the concessions I made to get a refurb seem to have played out okay.  I wasn't able to get SSD (that would've been an extra $400, since I wouldn't've been able to order refurb) or the VESA mount.  The second actually does bother me a little; the thing is huge.  But I've been running Xamarin Studio and XCode/Interface Builder without any trouble at all.  It's fast.  It's fun, which I couldn't say with my 2009 MacBook.

I worry that I'll get bitten by a Retina iMac latter this year, which will drive me crazy.  Part of the reason I went iMac was to wait two years before going Pro, and to get a decent monitor out of it.  I'm already going through monitor withdrawal at work, where I only have two ThinkVision L220XWC 22"ers (and a lower-res, 1080p ViewSonic), and even then only because I bought those two for myself.  So the monitor's great, but if I'm hoping to use Target Display Mode to connect the iMac's screen with a Mac Pro for years to come and there's a consumer-level retina iMac soon, I may kick myself for being stuck with what is, otherwise, an incredible monitor for the next six years.

But overall, wow.  Great computer.  Or, rather, an insane step up from what I'd been using previously.

Though I couldn't quite shake myself from watching some more Windows Phone 8 videos last night...

Labels: ,


posted by ruffin at 1/21/2014 08:45:00 AM
0 comments
Sunday, January 19, 2014

DataTables with Metro interface:

System.Data is not available for use in a Metro-style application.

I take all that nice stuff back.

You're killing me, Smalls.

posted by ruffin at 1/19/2014 01:47:00 PM
0 comments

I'm not sure where I was last year when the tutorial, below, was released, but it's wonderful.  Making Windows Phone 8 apps is now pretty much as easy for me as Windows Forms.  In part, this is, I think, b/c there's so little extra to do with a Windows Phone app to make a UI.  If you're shooting for a small screen, there's only so much to do.

I'm finally moving from the headless side of my Mono app, and was, since my best laptop is Windows-only, debating whether I should hack around on an Android app via Xamarin Studio when I was mobile or try to pick up Windows Phone again.  I'd like to concentrate on iOS, since everyone makes it sound like all the money for an app-sales driven company is on that platform, but then pick another to play around with and experiment with questionable features.  (I'd also like to make a good PC app with the same codebase, but that's another story entirely, I think.)

Looks like I'm going to save the $300 Xamarin requires to play on Android and stick to Windows for now.

Anyhow, here it is -- an excellent, free to access video (and text) tutorial series to get you from the cradle to the Windows Store.

Windows Phone 8 Development for Absolute Beginners | Channel 9:

Bob Tabor (LearnVisualStudio.NET) and Clint Rutkas (Microsoft/Channel9) team up to deliver this 11 hour Windows Phone 8 Development for Absolute Beginners series! Not only will you learn the absolute basics of installing and working with Visual Studio Express 2012 for Windows Phone and the Emulator, but you'll also learn XAML layout and events, how to utilize many of the Phone's built in features and additional open-source libraries.

In other news, it's been lots of fun making a quick and dirty console client on top of the codebase.  I've always enjoyed doing some WriteLines and ReadLines to test out code, but this is the first time I've delved into Console's SetCursorPosition, SetWindowSize, and ReadKey.  It's pretty old school stuff, and you figure out why elm and pine made you use other text editors to compose your email pretty quickly, but as far as the time invested for the amount of issues in your code, or issues in your app's flow, that it exposes are insanely useful.  It's hard not to encourage folks to make one before getting too far down "real" UI design as a matter of standard practice.

Labels: , , ,


posted by ruffin at 1/19/2014 01:15:00 PM
0 comments
Saturday, January 18, 2014

Base Class Usage Guidelines:

An interface type is a specification of a protocol, potentially supported by many object types. Use base classes instead of interfaces whenever possible. From a versioning perspective, classes are more flexible than interfaces. With a class, you can ship Version 1.0 and then in Version 2.0 add a new method to the class. As long as the method is not abstract, any existing derived classes continue to function unchanged.

Emph mine.

Yes.  What they said. Why is this even controversial?  (No, really -- Why is it so common to see interfaces where a base class would seemingly work just as well or, as pointed out above, better?  Is it that many don't really understand OO?  Other than kludging multiple inheritance, is there an advantage to interfaces that I'm missing?  Are there droves of CS professors teaching patterns with interfaces without really ensuring their students understand what they're accomplishing?)

Labels: ,


posted by ruffin at 1/18/2014 01:04:00 PM
0 comments
Thursday, January 16, 2014

Step 1: Inspect the inspector.  This horrendously tomato page talks about its importance, but only gives a top-level domain to figure out how to do it.

More success here -- Theming Chrome Dev Tools | Pixafy:

Once the Dev Tools are undocked, press Control Shift I (on Mac press Alt Command I), that new window that just popped up is the inspector for the first Dev Tools window!

Update 20140226: Apparently the Custom.css stuff is all gone. I've started using Chrome dev tools over Firebug more often, in large part b/c the RAM footprint of Chrome is lots smaller (today it was a 4x  difference), but when I have my browser window in portrait, the Chrome dev tools layout stinks.  Wanted to make the Sources source pane text smaller so that I could see more.  I can, if I do the Control-Shift-I trick, above, and hack the "embedded" CSS, but that's not a persistent change.

Looks like there's no wonderful, supported way to do that, so I'll keep Ctrl-minus-ing for now.

Labels: ,


posted by ruffin at 1/16/2014 12:37:00 PM
0 comments
Monday, January 13, 2014

Hey, NHibernate give me back my milliseconds - Derik Whittaker - Devlicio.us - Just the Tasty Bits:

Have you ever noticed that out of the box NHibernate’s DateTime type will truncate/ignore your milliseconds for DateTime fields?

We had notes inserting into a system with date stamps, and occasionally they'd come back in SELECTs in a different order than they were inserted.  Um, that's why.

The easiest way to "fix" this, keeping in mind SQL Server's limitations with storing milliseconds, is to change our Fluent NHibernate mappings to use NHiberate's customtype TimeStamp.

Map(pn => pn.CreatedDateUtc).CustomType();

Hello, unintuitive.  Better is to make everything a DateTime2, but I think the NHibernate mapping still has to include CustomType.  Still testing that one.

posted by ruffin at 1/13/2014 04:23:00 PM
0 comments

Firefox world loses Web dev guru to Chrome | Deep Tech - CNET News:

Dion Almaer, who had worked on developer tools at Mozilla earlier in his career, noted the significance of [the lead Firebug programmer in 2011, John J.] Barton's new job in a blog post today.

"Firebug used to be the way you debugged your sites, but that is changed," Almaer said. "It is too early to claim that Firebug is zombied, but all eyes will be on that...especially as we see other browser tools continue to blossom."
I'm often a "if it's not broken, don't fix it" kind of guy (not a huge limitation, since my threshold for entering "broken" state is horribly low), and have been using Firebug as my first-line tester for years.  I mean, heck, my code has to work in Firefox, so at worst, I'm only losing time that Firebug is worse than Chrome's tools (and that Firefox is slower than Chrome).  That is, code has to work somewhere first.  Why not Firefox?

But recently, I've heard too many good things from Chrome-first guys about Chrome's tools, have noticed that our app works insanely quicker in Chrome than Firefox, and am getting a little tired of seeing the "Warning: Enabling the Script panel causes a Firefox slow-down due to a platform bug. This will be fixed with the next major Firefox and Firebug versions," error at the top of my Firebug console.  I usually use Chrome when hitting our production testing server, and thought maybe it was time to test it as my dev choice instead.

(And, honestly, I had some trouble with Chrome keeping its cache clean/empty when I last tried -- even when set to no cache, it would occasionally cache jive, which made it much too easy to waste time testing there.)

When Googling how to transition from Firebug to Chrome's tools, I ran across the above post.  That's kinda strange -- I haven't felt Firebug was horrible, though I think I've seen a native Firefox equivalent pop up sometimes when I hit the "right wrong" key combination.

Anyhow, this is just to say I need to catch up with the state of browser debugging.  Firebug is great, but it's probably past time to come up for air and see if the transition cost to something else isn't worth it.

Labels: , ,


posted by ruffin at 1/13/2014 10:58:00 AM
0 comments
Friday, January 10, 2014

Found what looks like a decent intro to the TFS API, but was having a difficult time determining what URI I was supposed to use to access my server.  Looks like there could be a number of values (that's specifically with TFS in the cloud, but some of it seems to carry over).

Turns out the easy way is to open up the command line and fire off a tf command.

tf workspaces -format:brief

Collection: http://ourServer:8080/tfs/primarycollection
Workspace        Owner  Computer    Comment
---------------- ------ ----------- -----------------
BORKED_MERGE     Me     MY-COMPUTER


Grab the value from "Collection", paste into the tutorial code from above, and you're golden.

Trello (still free) seems like a really well-made Kanban board, and it's got what its docs seem to suggest is a pretty good API. We currently use TFS to handle most of our user story marshaling, but we could do a better job with "non-ready ready" story management. I'm hopefully I can write something quick and dirty to see where we are in TFS and keep a Trello board in sync to visualize which backlog items need design, dev research, grooming, etc, so that we know what needs to be addressed to keep the backlog healthy and ready to deliver work to teams.

Labels: ,


posted by ruffin at 1/10/2014 12:48:00 PM
0 comments
Wednesday, January 01, 2014

using System;

namespace ConsolePlay
{
    public class DelegateTester
    {
        public delegate void EventHandler(string strIn);
        public void raiseEvent (int intInput, EventHandler eventHandler)
        {
            if (intInput % 2 == 1)
                eventHandler (intInput + " is odd");
            else
                eventHandler (intInput + " is even");
        }

        public static void Main (string[] args)
        {
            DelegateTester delegateTester = new DelegateTester();
            DelegateProvider delegateProvider = new DelegateProvider();
            
            delegateTester.raiseEvent(5, delegateProvider.handleEvent);
            Console.WriteLine("Return to quit.");
            Console.ReadLine();
        }
    }

    public class DelegateProvider
    {
        public void handleEvent(string strIn)
        {
            Console.WriteLine("Event raised: " + strIn + " -- and handled");
        }
    }
}

Labels:


posted by ruffin at 1/01/2014 12:24:00 PM
0 comments

Support freedom
All posts can be accessed here:


Just the last year o' posts:

URLs I want to remember:
* Atari 2600 programming on your Mac
* joel on software (tip pt)
* Professional links: resume, github, paltry StackOverflow * Regular Expression Introduction (copy)
* The hex editor whose name I forget
* JSONLint to pretty-ify JSON
* Using CommonDialog in VB 6 * Free zip utils
* git repo mapped drive setup * Regex Tester
* Read the bits about the zone * Find column in sql server db by name
* Giant ASCII Textifier in Stick Figures (in Ivrit) * Quick intro to Javascript
* Don't [over-]sweat "micro-optimization" * Parsing str's in VB6
* .ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); (src) * Break on a Lenovo T430: Fn+Alt+B
email if ya gotta, RSS if ya wanna RSS, (?_?), ¢, & ? if you're keypadless


Powered by Blogger etree.org Curmudgeon Gamer badge
The postings on this site are [usually] my own and do not necessarily reflect the views of any employer, past or present, or other entity.