A constant flow of news, thoughts, and opinions on Cloud Computing and (pseudo) related topics.
Yes, Clemens is on the .NET Services team and owns the .NET Service Bus feature area as Technical Lead, in fact ;-)
7.9 for graphic performance index? Wow. Impressive :)
If you're interested, we procured these from www.pcpartsohio.com/BookDetail.aspx. I purchased one for personal use, and it's working out quite well.
You've been kicked (a good thing) - Trackback from DotNetKicks.com
Hey Mike,
Great solution to a common problem. For those who use Firefox, the excellent Foxmarks (addin) comes with a password manager that does the same. The file is encrypted with a pin, and it seems really secure. Your alternative is of course more secure but less integrated.
Cheers,
Laurent
Nice idea - but at my customers (and also at friends) I work on machines running Windows XP and Windows Server 2003. And AFAIK the Live Mesh software is only available for Vista and MacOSX (experimental stage)...?
I've run Live Mesh (public version not developer preview) on XP with no problem.
OK, then I'll try it and use Keith's PasswordManager ;)
Thanks!
Whoa...today is a doozy for buzzing, so let's get right to it. I For One Welcome Our New Cloud Overlords
The location of the Microsoft.Samples.ServiceHosting.Targets
C:\Program Files\Windows Azure SDK\v1.0\Samples\MSBuild\Microsoft.Samples.ServiceHosting.targets
Looking forward to a fantastic year and congrats on the new one!
I totally love the use of expression trees. Way to keep it DRY.
thank you - this is hugely helpful, and educational
SharePoint Customizing and Branding Web Content Management-Enabled SharePoint Sites (Part 1 of 3): Understanding
Hello!
Very Interesting post! Thank you for such interesting resource!
PS: Sorry for my bad english, I'v just started to learn this language ;)
See you!
Your, Raiul Baztepo
Cool stuff. Is there a reason we're specifying the command as a string and doing reflection, though? Why not specify as an ICommand and use the binding infrastructure?
The new TriggerActions can't use binding unfortunately. I would have just gone that route myself. That was the first path I followed originally.
This could be cleaned up a bit by using the targeted trigger action though.
Can we have the code please?
I guess I have awakened a slumbering giant by writing the post the other day . I went back to add more
Unfortunately this doesn't work if the backing variable has a private setter.
Why not? the closure happens in the context of the owning class.
Code is linked above...right at the top of the post
Pingback from TriggerAction driven command execution with zero code behind « vincenthome’s Tech Clips
Pingback from Twitter Trackbacks for Stealth Disease - Brownie Points [azurecoding.net] on Topsy.com
nice! very informative post. enjoyed reading is here and on LSC.
Pingback from Twitter Trackbacks for RIAlity TV - Brownie Points [azurecoding.net] on Topsy.com
Not too long ago, I responded to the reaction that many had to Joel Spolsky’s article “ The Duct Tape
<i>What’s really sexy to me is shipping a product. </i>
Amen.
People forget that most programmers and IT guys are employed by companies for whom IT is a staff function. For us, the product is assembled on the floor, the software is merely a tool _they_ use to get the job done.
The business guys could care less about shiny vs. duct tape. They care about 'does it work' and 'is it cost effective' and 'how does it help me ship'.
Pingback from Twitter Trackbacks for Welcome to 2010 - Brownie Points [azurecoding.net] on Topsy.com
Even when they're employed by software companies, shipping a working product that meets or exceeds market needs is still the most imperative goal.
I was going to talk about how my digital cleanse reminds me of a macro scale Pomodoro. Then I realized
Happy New Year Mike!
Since a couple of months I advice everybody who likes to use an IoC framework to look at the Common Service Locator (commonservicelocator.codeplex.com) facade. It won't give you an implementation, but defines an interface for IoC implementations. This gives us a uniform way of using the Service Locator pattern and allows swapping implementations.
A simple implementation on top of it is even easily made, as I did myself. It's quite similar to yours, but is completely lock-free. It's nice to see other developers are doing the same thing :-)
This post was mentioned on Twitter by azurecoding: Just published Windows Phone 7 the Belle of the Ball http://goo.gl/fb/P70A
Are you serious? How can you recommend those as pillars without dealing with Fox in Socks and the highly respected Green Eggs and Ham? Without the use of MVVM (that's Monkey, Vertebra, Vertebra Mammal), this is just horsing around.
Green Eggs and Ham in an application IMHO is not a best practice. The tooling definitely isn't there for it. And your mixing your edible concerns with your zoological concerns. You should use Pigs and Chickens over green eggs and hams it helps keep a separation of concerns and avoids the lifetime concerns of produce.
Mike,
You're entitled to your own opinion. And you're also wrong.
Plus how can I take this article seriously when your blog is not even running on Silverlight?
Pingback from Twitter Trackbacks for Just gave my definition of MVVM [azurecoding.net] on Topsy.com
I agree with you. However, I would add one more constraint to your definition in order to differentiate it from Supervising Controller. A ViewModel relies wholly on some sort of observer synchronization mechanism, however it's implemented (you've already listed a lot of examples), to connect the view and the view model. I've had a lot of questions about and seen a lot of developers confused about the difference between a Supervising Controller and a ViewModel because a SC uses a combination of observer sync and manual sync (or flow sync). I tend to view several of these patterns as a spectrum. PassiveView is on the left side, using wholly manual sync mechanisms; ViewModel is on the right, using wholly observer sync mechanisms; Supervising Controller is somewhere in the middle, using a combination of both (which is why people get confused and often misrepresent one as another).
I think one problem we have right now is that the Silverlight/WPF community, with a few exceptions, is *only* talking about MVVM. As a result, developers don't really understand the broader range of UI patterns, their differences (which are sometimes quite nuanced) and when one pattern is a more appropriate solution than another.
What better way to clear up confusion than an extremely vague definition.
What's vague about it? It's a pattern. Patterns don't dictate how they're implemented, they just provide a solution to a problem.
As I mentioned a lot of the confusion comes from people mistaking the implementation for the pattern itself. I wanted to take a step back and spell out just what the pattern is.
"Here here" on the distinction between *pattern* and *implementation*, Mike.
You aptly captured the fundamental intent of MVVM: separate view (visuals) from presentation logic
Rob's comment helps differentiate MVVM from other Presentation Patterns that share this intent.
The vagueness complaint has some merit. Yes people tend to confuse pattern and implementation ... and we don't want that.
But even a brief definition of MVVM would identify the distinguishing characteristics of the pattern, the collaborators, and how it works in the abstract.
You could do worse than the first screenful of Fowler's "Presentation Model": martinfowler.com/.../PresentationModel.html
A couple of pithy quotes therefrom:
"The essence of a Presentation Model is of a fully self-contained class that represents all the data and behavior of the UI window, but without any of the controls used to render that UI on the screen. A view then simply projects the state of the presentation model onto the glass"
"Compared to Passive View and Supervising Controller, Presentation Model allows you to write logic that is completely independent of the views used for display. You also do not need to rely on the view to store state. The downside is that you need a synchronization mechanism between the presentation model and the view. This synchronization can be very simple, but it is required. Separated Presentation requires much less synchronization and Passive View doesn't need any at all."
"Probably the most annoying part of Presentation Model is the synchronization between Presentation Model and view. ... Ideally some kind of framework could handle this, which I'm hoping will happen some day with technologies like .NET's data binding." [written pre-WPF/SL]
To my eye, this is sufficiently precise - I can see what it's about and compare it to alternatives - without succumbing to the implementation specificity trap that you justly decry.
I'd prefer to see this in the same format as was used by GoF, but you're spot on here. Way too much of the confusion lies in people mistaking implementation for pattern, and then other's not seeing the real pattern in the details of the implementation and thus writing about the pattern with a flawed understanding. Rinse, repeat, and cry.
For comparison:
In Passive View, the role of the controller is to synchronize state.
In MVVM, the role of the View Model is to represent state.
In Supervising Controller, the role of the controller is to represent simple state and synchronize complex/difficult to represent state.
Implicit in MVVM and SC is some form of observer synchronization which can be handled in a variety of ways.
Thanks for the feedback everyone...I agree that I may have been too spartan in my definition. I'll update with some more info.
--Mike
If then is a shorter version for the below pattern matching
let list =
[1..999]
|>List.map(fun x -> match x % 3 = 0 || x % 5=0 with
|true -> x
|_ -> 0)
|>List.sum
printfn "Sum of integers %d" list
Pingback from Twitter Trackbacks for Learning F# Using Project Euler - Brownie Points [azurecoding.net] on Topsy.com
seq { 1..999 } |> Seq.filter (fun x -> x % 3 = 0 || x % 5 = 0) |> Seq.sum
I'd like to bind to the TargetCommand property of ExecuteCommandAction but I can't because it is not a DependencyProperty. I'm not not familiar with creating DependencyProperties. Is it possible to make TargetCommand a DependencyProperty?
Pingback from Twitter Trackbacks for ADHD and Hyperfocus - Brownie Points [azurecoding.net] on Topsy.com
Pingback from Twitter Trackbacks for IRepository<T> and IUnitOfWork - Brownie Points [azurecoding.net] on Topsy.com
Fellow F# learner here.
The example on 5/17 works, but it will stack overflow if you try [0..999999].
I wonder why... trying to think of a recursive function that would do this. I'm sure it'd be faster than the iteration it has to do on 1..999999.
Pingback from Twitter Trackbacks for Your Software Raid Party - Brownie Points [azurecoding.net] on Topsy.com
Hello Mike,
I like your idea of separating concerns between the repository implementation and the data layer objects, but that's because viewing the problem from a theorical perspective. From a practical perspective, I think that it is reasonable to have a common repository interface and a repository implementation for each data layer. So if you switch your datalayer, or if for some group of entities you store them differently, you would use the same interface but another implementation.
This is mainly because if you need to expose different methods in your repository, for example, a method that results in a call to a stored procedure (for performance issues or something like that), you would have to create a method in your IUnitOfWork interface so your repository could call. That can be troublesome to maintain and may lead to polute your IUnitOfWork (or datalayer abstraction) concept.
Anyway, assuming you only do CRUDs, your design is fine, except for twothing.
Your FindBy method receives a Func<T,bool> and not an Expression<Func<T,bool>>. The difference is that expressions trees can be converted to SQL and your filter is executed on the database. Since your're using just a delegate your filter is executed in-memory which means ALL results from the DB will be loaded into memory and then filtered.
The other thing is that you're missing the Attach method on your IRepository.
Apart from that, I'd say to keep up the good work and let me know when you update this.
Best regards,
Manuel Felício.
Four things
1 It's not from theory it's from practice. I use this technique in production. And I'm not the first to leverage this approach
2. If I want to expose custom methods on the repository, I just place them on the derived interface and implementation (e.g. IFooRepository:IRepository<Foo>) other than Sprocs (which I have not needed) everything else is handled.
3. Yes the findby takes a Func<T, bool> but by the time it gets to the DAL itself (for example entity framework) it's implicitly cast to Expression<Func<T,Bool>>.
4. I don't put attach on the repository because that's a function of the Unit of Work. The thing about my design is that it allows the client to determine when to execute a batch of operations by being responsible for calling commit on the UOW. So I can perform operations on multiple repositories and commit them in one transaction.
I understand if you didn't quite understand what was going on, like I said it took a while for me to appreciate the utility of the Unit of Work pattern and even longer to realize that I could make the repository fully independent of the persistence layer.
I'm very proud of you. I love that you are able to do what you love. I don't know anyone that deserves this opportunity as much as you!! Now get to work and break a pencil!!
Pingback from Twitter Trackbacks for MVVM Unleashed - Brownie Points [azurecoding.net] on Topsy.com
Hopefully my copy will be in my NOOK rather than on a shelf, but I look forward to it none the less. Congrats!
Sorry for the late response, your comment was buried under a metric ton of spam. TargetCommand is a Dependency property, what are you attempting to bind it to?
Way to go Mike! That's awesome.
Daniel
Your MSDN article on Enterprise Patterns with WCF RIA Services, literally changed my life, not only on that specific topic, but it pointed me to amazing bibliographic references that literally changed my life.
I can't wait for this book to come out. best of lucks and congratulations on getting this book deal!!!
Juan,
Thank you for the compliments! It's very fulfilling as an author to hear that I've hit the mark with my efforts. Hopefully, I can match the same standards with the book!
Excellent approach. That's what I did with my Hands-On MVVM talk. I started by listing the advertised benefits of MVVM, only to reveal that they are actually benefits of data binding. So we built an app using data binding. That revealed the *real* benefits of MVVM as we refactored our way into it.
The above link takes you to the video.
Back in August, I blogged about my discovery that I might have ADHD . Last night, I was chatting with
Pingback from Twitter Trackbacks for Follow Up on ADHD - Brownie Points [azurecoding.net] on Topsy.com
Pingback from Twitter Trackbacks for Inspiration for MVVM Unleashed - Brownie Points [azurecoding.net] on Topsy.com
Hi Mike,
I'm really exited about this and can't wait to get my hands on this book.
Can I know around when I can expect to have this?
Thanks.
I have been pulling my hair out trying to figure how to best structure my project for use with the Repository pattern and IOC. I have looked at Unity, don't like it much, and have finally settled on Autofac.
could you post a best practice or some code on how to use the UnitOfWork ?
I have a sample project that I will be posting soon. Will show how to put it all together.
So I’m on a pretty cushy government contract (turns out that if you want to have a low stress job
A very compelling story, and well told. This is an example not just to recruiters, but to anybody who relies upon others to get their job done.
I wonder if Jack will read or respond to this post. A good recruiter would read your blog as he finds a "good fit" for you.
In light of Hammet’s recent resignation from the MEF team, I decided to finish up this post discussing
Thanks for discussing the aforementioned article. I agreed with some of the points in it but also share much of your sentiment.
Part of me would like to break out from the .NET world, and some of the newer frameworks like MVC potentially make this easier.
@long2know
I have a post lined up talking about my decisions with .NET stay tuned :)
The Amiga OS 4.1 is better than Windows 7 in every conceivable way. Amiga OS has 100% market penetration amongst people who are running Amiga OS. Amiga is much better than Windows, OS X, or Linux. All twelve of the people who run the Amiga OS are smarter and better looking than those who run those other operating systems.
Congrats, I see the book is on the horizon! www.amazon.com/.../0672334380
In my shopping cart. ;-)
Great post, but I'm not sure that my anus is declarative (I might have misunderstood that point).
Nice post. I like the idea of DirectUI and the most important thing is in your last sentence. "...but XAML was born to do it." I'm fine with HTML5 as long as I don't have to use it.
DirectUI was most definitely not born to do it, it looks like *** - www.uieasy.com/directui
If you look at the details of the description "The DirectUI doesn't make use of the native Win32 controls except some complicated control such as edit, listctrl. Instead,It draws controls and widgets on the screen, this kind of interface is now new: "Skinning" has been widely accepted for its cool look and feel, as seen in Microsoft Msn and Media Player."
Basically DirectUI is a low-level framework. It doesn't rely on User...it might use GDI but translating from GDI to another framework (e.g. Direct2D) is easier than translating from User to another Window Manager.
Also, I think what you linked to is a third party tool that is "similar" to DirectUI.
Good post. Deeply thought out, but all your stuff is like that :)
I have been focusing on LightSwitch lately, and if you get a chance, check out my article:
"This Is How LightSwitch Does MVVM"
lightswitchhelpwebsite.com/.../This-Is-How-LightSwitch-Does-MVVM.aspx
Basically, LightSwitch is in line with what you are saying.
Thanks Michael! I've been following what you've been doing with LightSwitch and do agree that it will be a great stepping stone to RAD in the next Windows version. And it's much better than Access because of the capabilities it provides for "upgrading" to a "full" application.
What is DirectUI?
"Mike" some adventurous souls have been hacking with the leaked M3 build (early OEM build for Window8) and uncovered the Direct UI library which can be invoked using managed code to display an immersive app.
Notes: WPF does not sit on top of the desktop window manager (DWM). The DWM is a compositio nengine, not a desktop graphics engine. You can turn the DWM competley off and WPF applications will still work just fine. In fact, you can target XP (which has no DWM) with WPF.
WPF and Silverlight are not dependant on user and GDI the way you think they are. It really is turtles all the way down. The performance issues in WPF and Silverlight are not due to coupling with GDI and USer. Its more due to object mangment costs and how they render.
Yes, I work there.
You're right...I flubbed on some of my statements. Thanks for clarifying for me. I do remember now that DWM is not present on XP. I'll update and correct.
Pingback from Gianluca Cucco Blog » Silverlight: The Rumors of My Death Have Been Greatly Exaggerated!
I'm afraid to say that, since you didn't understand that DirectX is used natively, and that concomitantly the GPU is used to render WPF, it takes much of the punch out of your article. You presented this mysterious DirectUI as doing what WPF has already been doing BOTH with User32 and GDI:
<There are still performance issues in WPF…there are performance issues in Silverlight on Windows Phone. This is because when you go far enough down it’s not turtles all the way. It’s still the same old stuff that Windows has been hobbled with since version 1. User and GDI.
Until now. Windows 8 introduces DirectUI. And with Direct UI the gauntlet has been thrown down.>
Every beginning WPF makes it clear that GDI/+ is completely abandoned by WPF, while User32 is abandoned for all rendering of controls (like the battleship gray button, all other controls), but still is in the picture for other issues. As MacDonald's WPF book says (p. 2):
"One component that’s still in the picture (***to a limited extent***) is User32. That’s because WPF still relies on User32 for certain services, such as ***handling and routing input and sorting out which application owns which portion of screen*** real estate. However, all the drawing is funneled through DirectX."
But nonetheless, I am still hopeful that DirectUI represents something great and even improved for WPF (like going native compilation?!), and many other points made here I hope are right in saying MS is fully embracing XAML. Best.
@Eclipsoft Did you read the update...people make mistakes and I acknowledged it when "Ricky" corrected me.
That being said, there are three points that I was attempting to make (and I think I did):
1. Microsoft has invested a lot over the years in moving toward markup driven UI.
2. Legacy support has prevented them from fully embracing it. Virtualization presents itself as a chance to sever the ties that bind them.
3. WPF/Silverlight have a lot of traction within the ecosystem. Microsoft isn't about to throw that out the window. While there may be some tweaks to the framework, the skills will port for the most part.
I tried to summarise the information coming out about the new Jupiter programming model
davidburela.wordpress.com/.../premature-cries-of-silverlight-wpf-skill-loss-windows-8-supports-all-programming-models
Quick Summary:
* Windows 8 supports applications being built in C# / XAML / VB.Net / C++ / HTML+JS.
* The new UI framework ‘Jupiter’ allows applications to be written in your language of choice. This is similar to how the .Net framework allowed people to code against the framework in their language of choice.
* Jupiter seems to be a ‘Next generation’ XAML based framework
Me along with my team are waiting for the same book.
Antony,
We're looking at Fourth Quarter of this year for publishing. Hopefully, you'll have a nice Christmas present for your team :)
I really wish that you would take this into a silverlight enterprise application and use either
a wcf ria class library or wcf data service library
and then you could look into prism. THe biggest problem with most authors is they never really challenge the audience beyond the first grade level. Please look for a opportunity for a enterprise book!!!
Pingback from Recruiter etiquette | Eautolot
Mike, you said something about posting a sample project a few months ago. Any update on that?
Pingback from Am I a Fanboy? | Web Tech News
Good post. I'm still telling myself just effing do it and not doing it though. Personal Kanban, GTD and whatever are only effective if you are disciplined enough to do it. Otherwise, useless.
The stars have aligned and I have enough impetus to Just Do It . On Tuesday, Microsoft announced the