Contents tagged with General Software Development
My blog has been quiet for quite a while. My inspiration comes from crunching/exchanging information which I should do more often.
Gartner analysis tells us that by 2013 mobile phones will overtake PC’s as the most common Web access device worldwide. A few years back I would have said non sense, but apparently most Web users are comfortable with less processing power. Just take a look at the increasing business in Netbooks.
Wouldn’t it be great to have a mobile phone which can connect wirelessly to my home TV, monitor, car display, mouse, keyboard, etc? And to have the processing power of the current Netbook generation?
Where can I buy it?
Why are we making our PC devices (for instance the slate) smaller while we can make our mobile device’s functionality bigger?
What about the single responsibility principle? Does it apply to physical devices as well as good object-oriented software?
Some of my clients have/had challenges embracing object-relational mapping data access API’s. I’ve experienced this with introducing Neo, IBATIS, NHibernate, LLBLGen Pro, LINQ to SQL and Entity Framework in projects for our clients.
As with most things in our field this hasn’t much to do with the technology choices we make. Better collaboration is the key here. I’m glad that Patterns & Practices acknowledges that guidance in this area could help these two groups to leverage each others strengths. I’m confident that enabling a better understanding of both domains will improve the adoption of Microsoft’s data access api’s in the future.
Please give your feedback on the Data Access Guidance wiki.
I was triggered by Dennis’s post “Why developers should not be happy with a project manager” in which he states.
..in a team with different roles, there’s always the product manager and the program manager. These roles can never be filled by the same person. Putting it simple, the first role is there to make sure the customer gets what he wants. The second role is to make sure the team isn’t stressed out, can do their job, etc.
Dennis continues with..
People involved so far are also pretty anxious to use Scrum and some XP practices for this project, so we’ll see where this ends.
This reminded me of my own project experiences. Agile purists better stop reading ;) Looking back I can’t really say that applying more Agile methods gave perceptible better results. We did, however, spend more time thinking about the development process while applying Agile practices. During these times we strongly focussed on the sum of all the parts. I felt as if everyone in this big team had an equal share in the joint success.
Success equals the sum of all the parts.
Years ago I was very strong in advocating Agile over the Waterfall approach. Today I don’t care so much anymore which process is being applied as long as we all realize that success equals the sum of all the parts. My advice is to focus on the connection between your work and the work of others. Have great projects!
The Patterns & Practices team is working on the upcoming release of its Application Architecture Guide, 2nd Edition which should arrive late summer this year.
One of the areas the team seems to be concentrating on is Domain-Driven Design (DDD). A how to guide is publicly available since January. Skimming through the comments it appears that developers/customers are challenging the original authors how to apply the ideas and experiences published in books (Evans, Fowler, Nilsson).
Implementing a domain model in a general purpose language (Java, C#, etc) is challenging. Key to success is to have as little distractions (from the development platform) as possible. The set of design principles and patterns will help to accomplish this goal. I learned that, after discussing ideas with attendees during my “Applying Domain-Driven design in .NET” talk at SDC 2007, there’s a strong focus to overcome the technology use/constraints in applying DDD in our target platform.
My advice for the Patterns & Practices team is to focus on:
Which principles and patterns should be applied (as a coping strategy) for the distractions in the development platform?
Please realize that this is different from guidance on how to implement DDD-patterns with the .NET platform.
Language workbenches are well underway to completely change the way we do programming, so we might not this guidance anymore ;)
Received my Thinkpad from Lenovo repairs earlier this week (vga output issue). A couple of minutes later the Windows 7 installer was running.
After all this time I assumed MS would have fixed my biggest gripe with Vista. Network copy performance. Rest assured... it's even slower in Windows 7.
update: Copying large (200 MB) files fails with the error "Make sure you are connected to the network and try again". It looks my Windows 7 adventure will be a short one.
update2: Updated the wireless network driver (this version) as suggested in the comments. Still not working, not even with Robocopy.
update3: Turned of autotuning with "netsh int tcp set global autotuninglevel=disabled", don't forget to reboot. Fixed! Copying files over the networks is still sloooooooow.
Months ago I’ve been discussing this with attendees over at the PDC. Now it’s here, and no it’s not Windows 7. The future operating system gOS, a browser based cloud operating system. It boots a browser which is everything I need today.
Why not join the buzz. Next Saturday I’ll be on my way to the Professional Developers Conference in Los Angeles. I can’t wait to get the scoop on emerging Microsoft technologies. From the looks of it, the next important technology wave focuses on Cloud Computing. This ongoing evolution of software as a service (SaaS) en Web 2.0 technologies creates interesting opportunities for businesses in many different ways. Although Cloud Computing is still in the transformational stage and we’re only facing the first generation of technologies build to support this paradigm, this could change the IT industry significantly in a relative short period of time. Let’s get inspired.
The Software Development Conference 2008 was great. I gave two talks this year. The first was in a chalk & talk format titled “Understanding the ADO.NET Entity Framework Architecture and its Implications on your Application Architecture”. The audience gave me a pretty good workout. I promised that I’d share my whiteboard sketches on this blog. I’ll try to reproduce them and post an update somewhere next week.
The other talk was titled “Technology Deathmatch: LINQ to SQL vs. ADO.NET Entity Framework” together with Alex Thissen. Preparing and delivering this session together with Alex was a brilliant experience. With both technologies moving forward in future .NET versions we’ll definitely pick up the fight along the lines. Stay tuned :) or better Alex you’d better be prepared.
I’ve been doing my best to do other things lately and completely missed this terrific news. Opening up the development process of the Entity Framework V2 and the input from these smart guys should guarantee success.
Regardless of whether I agree with Jeffrey Palermo in his answer to the question: How do we ensure the long-term maintainability of our systems in the face of constantly changing infrastructure? Jeffrey first gives his definition of long-term maintainability and changing infrastructure. With the definitions his answer to this question is: Don’t couple to infrastructure.
Two questions came across my mind. First what exactly is infrastructure? In other words is the infrastructure of today the infrastructure of tomorrow. I see a trend where the business of today is the infrastructure of tomorrow. Service Orientation is one of the big drivers in this area where services covering certain aspects of the business become a commodity, because certain products and services become a commodity. I also see today’s infrastructure becoming more and more transparent. Significant investments in open standards are starting to pay of.
Jeffrey’s article takes on the aspect of object-relational mapping from a particular viewpoint. Frans Bouma commented that object-relational mapping frameworks are incorporating more advanced functions which make it harder to decouple important business aspects of our applications from these framework and tools.
In one of my previous lives, in the industrial automation, it was very common to enable transparency through standards and regulation. I consider a nut and bold to be very standardized. Taking this analogy further aren’t object-relational mappers the nut and bolds for our applications? What about standardisation?