Skip to content

Software Development Blogs: Programming, Software Testing, Agile Project Management

Methods & Tools

Subscribe to Methods & Tools
if you are not afraid to read more than one page to be a smarter software developer, software tester or project manager!

Architecture

How To Use Tasks in Microsoft Outlook More Effectively

If you just have a long list of tasks in Microsoft Outlook, then it won’t help you focus on immediate actions.  The key is to organize your tasks in Microsoft Outlook by priorities.

The challenge is that the first thing you’ll most likely want to do is sort by a custom priority.

While it’s not very complicated, it can be incredibly frustrating if you just want a simple task list that sorts by your custom priorities, and you don’t know the precise steps to make that happen.

Let’s do it.

If you do want to use Microsoft Outlook for tasks, here’s the trick to making it more useful:

  1. Add Start Date (it’s often more important to know when to start something, than to know when it’s due – this helps you bubble up critical actions better)
  2. Add a custom priority field.  In the example below, I created a “Pri” field and used P0, P1, and P2 for the priorities.  Here’s the trick:
    1. Don’t use the “Custom Priority” field that’s readily available in “Field Chooser”.  (You won’t be able to edit the text and you’ll get frustrated.)
    2. Instead, add a custom field by clicking “New
” on the “Field Chooser” – see below.
  3. Group by your custom field.  After you add your custom field for priority, to group by it, you need to use the “Group By” option (it won’t be listed under “Arrange By”)
    1. Note -- You need to switch “Select Available Fields” from the default to “User Defined Fields in Folder”  (otherwise, you won’t see your custom priority field)

Here it is visually 


This is just a simple set of tasks in Microsoft Outlook, nothing fancy, so we keep our focus on the key thing – a list of tasks organized by priorities with a start date.

 

image

When you right-click on the fields, you can click the “Field Chooser”, and then click “New 
” to create a “New Column.”

image

To group your tasks by your new custom priority field, you can again, right-click the fields at the top of the Tasks, but this time, click “View Settings.”  From there, click “Group By 
” and then change “Select available fields from” to be set to “User-defined fields in folder.”  This will then let you set the “Group items by” option to your new custom priority field (“Pri” in my example above.)

image

Remember, the key to effective task management isn’t managing your tasks.  It’s actually doing the most important tasks that achieve your goals, at the right time, in an efficient and effective way.

You Might Also Like

Are You Using Agile Results?

Agile Results on a Page

How I Use Agile Results

Agile Results: It Works for Teams and Leaders Too

Categories: Architecture, Programming

Sponsored Post: Dow Jones, Spotify, Evernote, Surge, Rackspace, Amazon, Booking, aiCache, Aerospike, Percona, ScaleOut, New Relic, LogicMonitor, AppDynamics, ManageEngine, Site24x7

Who's Hiring?
  • Amazing things are happening at Dow Jones – help build the next generation News and Media platforms that serve the best journalism in the world. High-impact, passionate, and driven technologists thrive in our environment, building platforms that deliver trusted content that enlightens and inspires millions around the world.  Please apply online
  • Want to build scalable systems that power the world's largest music streaming service? Spotify is looking for engineers for our backend infrastructure team. Apply now.
  • At Evernote our vision is to help the world remember everything. If you want to work in a face paced, highly rewarding environment with some of the smartest engineers on the planet, then come join us! We are looking for Sr. Security Engineers and Sr. Operations Engineers/DevOps to join our operations team.
  • LogicMonitor is looking for a Front End developer to have a huge impact, be valued, realize their dreams, and help us realize ours. We are looking for someone to own the code that delivers the design and usability of LogicMonitor's enterprise SaaS application(s). Please apply online
  • We need awesome people @ Booking.com - We want YOU! Come design next generation interfaces, solve critical scalability problems, and hack on one of the largest Perl codebases. Please apply online.
  • The AWS Relational Database Service (RDS) automates management of relational databases in the cloud. We have a wide variety of customers and are part of many mission-critical applications, like the ones built by the 2012 Obama re-election campaign. If you're interested in joining a fast-growing service and team, please send your resume to rds-jobs@amazon.com.
  • New Relic is looking for a Java Scalability Engineer in Portland, OR. Ready to scale a web service with more incoming bits/second than Twitter?  http://newrelic.com/about/jobs
Fun and Informative Events
  • Surge - The Scalability & Performance Conference, presented by OmniTI is happening on Sept. 12th-13th. Special, High Scalability Reader Rate: $50 off registration--now through September 10!
  • It's back! Join the MySQL Community at the annual Percona Live MySQL Conference and Expo in Santa Clara, April 22-25. This year's conference features an outstanding lineup of 92 speakers delivering 112 breakout sessions over three days! 
Cool Products and Services

If any of these items interest you there's a full description of each sponsor below. Please click to read more...

Categories: Architecture

7 Ways to Take an Outside-In View of Your Group

I was helping a mentee take a new view on their business, so they could transform their business to compete in a new arena.   Here are the 7 ways I outlined for them to get a better view on their business to shape significant change:

  1. What are the key deliverables that the company cares about? (Who are the stakeholders and why do they care?)
  2. How does the money flow? (Who funds and why?   If they gave you more money, what more would you do? If you got less money, what would be cut?   This gives you a fast business sense)
  3. What is the cadence of your deliverables?  (Do you ship 3 big thingies or 30 thingies per year? .. what would a “fast” cadence look like?   More importantly, what would people value?  For example, can you focus on 3 big wins each quarter that have high impact?)
  4. What’s the roadmap look like?  (Can you put it on a one-slider to show the big impact in a way others get?)
  5. What are the critical few KPIs that tell you whether you are keeping up, falling behind, or changing the game?
  6. What is your unique set of capabilities of your product/service?
  7. What is the unique set of capabilities of your people?

If you can answer those without a lot of work – congrats!

The above lens gives you quick insight and a critical view into the customer, the value you provide, the cost, and the capabilities you can use to drive meaningful change and transformation.

To put that into context and apply it, when business leaders look to shape a business, they tend to look at the capabilities.  They want to know what’s unique and what’s redundant.   If you can’t differentiate at your capabilities, then you have a problem articulating your unique value.

Capabilities help give you a simple language for talking about value and unique strengths.  They are also a business tool for consolidating and improving efficiencies by maturing or outsourcing capabilities.

Use them wisely.

Categories: Architecture, Programming

The Secret to 10 Million Concurrent Connections -The Kernel is the Problem, Not the Solution

Now that we have the C10K concurrent connection problem licked, how do we level up and support 10 million concurrent connections? Impossible you say. Nope, systems right now are delivering 10 million concurrent connections using techniques that are as radical as they may be unfamiliar.

To learn how it’s done we turn to Robert Graham, CEO of Errata Security, and his absolutely fantastic talk at Shmoocon 2013 called C10M Defending The Internet At Scale.

Robert has a brilliant way of framing the problem that I’ve never heard of before. He starts with a little bit of history, relating how Unix wasn’t originally designed to be a general server OS, it was designed to be a control system for a telephone network. It was the telephone network that actually transported the data so there was a clean separation between the control plane and the data plane. The problem is we now use Unix servers as part of the data plane, which we shouldn’t do at all. If we were designing a kernel for handling one application per server we would design it very differently than for a multi-user kernel. 

Which is why he says the key is to understand:

  • The kernel isn’t the solution. The kernel is the problem.

Which means:

  • Don’t let the kernel do all the heavy lifting. Take packet handling, memory management, and processor scheduling out of the kernel and put it into the application, where it can be done efficiently. Let Linux handle the control plane and let the the application handle the data plane.

The result will be a system that can handle 10 million concurrent connections with 200 clock cycles for packet handling and 1400 hundred clock cycles for application logic. As a main memory access costs 300 clock cycles it’s key to design in way that minimizes code and cache misses.

With a data plane oriented system you can process 10 million packets per second. With a control plane oriented system you only get 1 million packets per second.

If this seems extreme keep in mind the old saying: scalability is specialization. To do something great you can’t outsource performance to the OS. You have to do it yourself.

Now, let’s learn how Robert creates a system capable of handling 10 million concurrent connections...

Categories: Architecture

Stuff The Internet Says On Scalability For May 10, 2013

Hey, it's HighScalability time:


(In Thailand, they figured out how to solve the age-old queuing problem!)

 

  • Nanoscale: Plants IM Using Nanoscale Sound Waves; 100 petabytes: CERN data storage
  • Quotable Quotes:
    • Geoff Arnold: Arguably all interesting advances in computer science and software engineering occur when a resource that was previously scarce or expensive becomes cheap and plentiful.
    • @jamesurquhart: "Complexity is a characteristic of the system, not of the parts in it." -Dekker
    • @louisnorthmore: Scaling down - now that's scalability!
    • @peakscale: Where distributed systems people retire to forget the madness: http://en.wikipedia.org/wiki/Antipaxos 
    • @dozba: "The Linux Game Database" ... Well, at least they will never have scaling problems.
    • Michael Widenius: There is no reason at all to use MySQL
    • @steveloughran: Whenever someone says "unlimited scalability", ask if that exceeds the berkenstein bound
    • @nationofminds: "I have infinite MIPS. Unlimited scalability. And zero effing patience." 
    • Endowing cells with logic and memory: Genetic circuits that process and permanently store information are created with recombinases that flip the orientation of DNA cassettes.

  • Search Is Eating The World. The long sought after Nirvana of search and database becoming one may be nigh. 

  • And you thought scalability didn't pay: Twitter Acquires Palo Alto-Based Scalable Computing Startup Ubalo

  • New Finds: @foodfight is an interesting and informative Chef oriented DevOps podcast you may enjoy if that's the sort of thing you enjoy, which you probably do. From which I learned from fellow Way of Kings aficionado Brandon Burton about a new deep systems podcast called Real Talk by James Golick and Joe Damato, who want to talk about things concrete, not like that Hacker News BS.

  • I'd love to see the API: The idea we live in a simulation isn't science fiction. Magic anyone?

Don't miss all that the Internet has to say on Scalability, click below and become eventually consistent with all scalability knowledge...

Categories: Architecture

2013 Conferences Mike Walker will be Attending

Mike Walker's Blog - Thu, 05/09/2013 - 21:56

 2013 Conferences Mike Walker will be Attending

For those conference goers out there I wanted to let you all know that I will be at a few US based conferences this year. There may be a few more later in the year but this is what I know for now.

Like many others, I have really enjoyed discussing EA topics, debating the latest trends and frankly, learning from you. Earlier this year I had a great time talking to many of you at the Troux World Conference. That’s the real highlight for me.

If you are attending the event listed below and want to have a meet up please direct message me on Twitter @mikejwalker.

Here are the events I’ll be at for the next few months:

I will be presenting at the Open Group Conference but not at HP Discover (missed the submission window!) and Gartner.

Again, looking forward to seeing you!

Categories: Architecture

The Business Model Canvas: Know Thy Business

Mike Walker's Blog - Thu, 05/09/2013 - 21:24

 Do you Really Know Your Business? As Enterprise Architects we drive to maximize value in our companies. With most EA teams residing within an IT area under a CIO we can find ourselves bogged down by the technology weighing down on decisions. The challenge with that is one of context. Without understanding “Why” we are solving a problem will most certainly inhibit the value in which is achieved.

So the question is, do we really know our business before we make architecture decisions? What tools do we use or don’t use to understand the business model?

I was happy to see Alexander Osterwalder  publish on the Harvard Business Review blog a post titled, “A Better Way to Think About Your Business Model”.  Certainly take a look at this. His post provides some high-level information on why it’s important to use the model. If you find value in the model as I do, you will want to pick up his book, Business Model Generation. Personally I like the hard copy best given it’s so visual. There is also an iPad app that you can get that works really well too. You can find it in the Apple App Store here: https://itunes.apple.com/us/app/business-model-toolbox/id431605371?mt=8 

As I eluded to above, I have found a lot of value in this tool. It is one that I've been using for quite some time now. It’s a brilliant model that helps you dissect what your business is. The data itself isn’t rocket science. It’s the conversation that it triggers which drives the value. I often apply this in workshop like sessions rather than one off data collecting exercises.

 

 business model canvas

 

WARNING: While it can allude to, the Business Model Canvas does not tell you why your business has been built in the fashion it has. This is within strategy oriented methods and models.

The business model canvas can really help you to understand your business. What is nice about it is that the questions can be applied at multiple levels. You can apply it at a corporate level or apply it to a business unit.

As an example of this, I applied it to an already established enterprise architecture organization. I used the model to assess the organization on its “health”. Asking those business oriented questions forces us to think as if we were a business unit, and that’s not a bad thing. The results were quite amazing because it got the right level of conversation and thinking going to evolve the overall value proposition.

 

About the Business Model Canvas

If your not familiar with the Business Model Canvas below is a two minute overview of the Business Model Canvas, a tool for visionaries, game changers, and challengers. The business model canvas — as opposed to the traditional, intricate business plan — helps organizations conduct structured, tangible, and strategic conversations around new businesses or existing ones. Leading global companies like GE, P&G, and NestlĂ© use the canvas to manage strategy or create new growth engines, while start-ups use it in their search for the right business model. The canvas's main objective is to help companies move beyond product-centric thinking and towards business model thinking.

 

 

Find out more at http://www.businessmodelgeneration.com

Categories: Architecture

Gartner Says Smart Organizations Will Embrace Fast and Frequent Project Failure in Their Quest for Agility

Beautiful.

In a new digital economy and a world of ultra-competition, it’s great to shape a smart organization.

We learned this long ago.   Agile was part of the early Microsoft patterns & practices DNA.   We embraced agile methods and agile management practices.

We learned that execution is king, and that shipping early and often gives you better feedback and a way to make changes in a customer-connected way.

Here is what Gartner says 


“Accepting higher project failure rates can help organizations become more efficient more quickly, according to Gartner, Inc. Gartner said project and portfolio management (PPM) leaders who take a "fail-forward-fast" approach that accepts project failure rates of 20 to 28 percent as the norm will help their organizations become more agile by embracing experimentation and enabling the declaration of success or failure earlier in a project's life.”

Check out the article, Gartner Says Smart Organizations Will Embrace Fast and Frequent Project Failure in Their Quest for Agility.

Categories: Architecture, Programming

Typesafe Interview: Scala + Akka is an IaaS for Your Process Architecture

This is an email interview with Viktor Klang, Director of Engineering at Typesafe, on the Scala Futures model & Akka, both topics on which is he is immensely passionate and knowledgeable.

How do you structure your application? That’s the question I explored in the article Beyond Threads And Callbacks. An option I did not talk about, mostly because of my own ignorance, is a powerful stack you may not be all that familiar with: Scala and Akka.

To remedy my oversight is our acting tour guide, Typesafe’s Viktor Klang, long time Scala hacker and Java enterprise systems architect. Viktor was very patient in answering my questions and was enthusiastic about sharing his knowledge. He’s a guy who definitely knows what he is talking about.

I’ve implemented several Actor systems along with the messaging infrastructure, threading, async IO, service orchestration, failover, etc, so I’m innately skeptical about frameworks that remove control from the programmer at the cost of latency.

So at the end of the interview am I ready to drink the koolaid? Not quite, but I’ll have a cup of coffee with the idea. 

I came to think of Scala + Akka as a kind of a IaaS for your process architecture. Toss in Play for the web framework and you have a slick stack, with far more out of the box power than Go, Node, or plaino jaino Java.

The build or buy decision is surprisingly similar to every other infrastructure decision you make. Should you use a cloud or build your own? It’s the same sort of calculation you need to go through when deciding on your process architecture. While at the extremes you lose functionality and flexibility, but since they’ve already thought of most everything you would need to think about, with examples, and support, you gain a tremendous amount too. Traditionally, however, processes architecture has been entirely ad-hoc. That may be changing. 

Now, let’s start the interview with Viktor...

Categories: Architecture

Not Invented Here: A Comical Series on Scalability

I read one of these poignantly humorous comics on Not Invented Here a while back and since I wasn't sure it was OK to repost I emailed asking for permission. Nada. Then I saw Martijn de Vrieze posted a collection of scalability comics from NIH and decided what the heck (click image to read on site):

Thanks to Martijn for curating the collection and NIH for creating them.

And I agree with Martijn, they do capture an ineffable quality about the entire space.

Categories: Architecture

Agile Downsizing: Why Agile Skills Improve a Project Manager’s Job Security

In PM Network magazine, Jesse Fewell wrote a great article on Agile Downsizing? Why Agile Skills Improve a Project Manager’s Job Security.

Here are a few highlights:

“Agile wasn’t designed to improve the bottom line like that, but it’s a misconception that has some project managers worrying whether a move to ‘self-organizing’ teams would make their position redundant.  Even more concerning, many of the formal approaches, such as Scrum or Kanban, do not define a project manager role.”

Project managers are in higher demand than ever.  Fewell writes:

“PMI research shows the use of agile approaches tripled from December 2008 to May 2011, and 63 percent of hiring managers would encourage their project managers to pursue agile certification.”

It’s not doing more with less. 

Fewell shares a few skills that project leaders with agile experience can show on their resume:

Delegating more work – “Do you have a bent for process and facilitation?  Then create that well-oiled machine and groom an analyst to manage the business. The most successful project managers I’ve met have focused on their strengths, and found capable hands for the rest of the work.”

Leading more – “Agile approaches place a dogged focus on delivering business results by improving collaboration.  Once you’ve delegated the daily minutiae to the project team, you can invest in more strategic relationships.”

Driving more improvement – “
 if you’ve equipped and trusted your team to handle the details and you’ve improved collaboration with stakeholders, then you finally have the energy and influence to brainstorm solutions to that quality problem, stabilize a more reliable delivery cycle than last year, or launch a product-strategy working group to mend some broken fences and get everyone on the same page.”

The key take away is this:

“The project manager with agile skills has evolved past a positional title babysitting details.  The new role is about building the capability of your teams, partnering with senior stakeholders and driving incremental improvements across the board.”

You Might Also Like:

10 Ways to Make Agile Design More Effective

Agile Life-Cycle Frame

Agile Methodology in Microsoft patterns & practices

Are You Used to Delivering Working Software on a Daily Basis and Changing the Software in Response to Emerging Requirements?

Methodologies at a Glance

Roles on Agile Teams

The Art of the Agile Retrospective

Categories: Architecture, Programming

Are You Used to Delivering Working Software on a Daily Basis and Changing the Software in Response to Emerging Requirements?

That’s a pretty good question, and timeless, too.  

I remember several years ago, when a vendor asked me that, and I remember laughing and thinking, “yeah, that’s what we try to show other people how to do.”

What was great though, was the vendor followed up with a short-list of precise questions:

  1. What is your current software development process?
  2. Key milestones?
  3. Release frequency?
  4. Daily practices?
  5. Build frequency?
  6. Approach for getting / learning requirements?
  7. Approach for dealing with changing / emerging requirements?
  8. Approach for creating testable software? (e.g. you change the software for requirement X, how quickly can you make and verify the change)

That’s actually a really good set of questions both to quickly get a handle on your software development process and to test how “agile” you really are.

It also reveals your culture and how responsive to change and feedback you really are.

You Might Also Like

10 Ways to Make Agile Design More Effective

Agile Life-Cycle Frame

Agile Methodology in Microsoft patterns & practices

Methodologies at a Glance

Roles on Agile Teams

The Art of the Agile Retrospective

Categories: Architecture, Programming

10 Ways to Make Agile Design More Effective

The key shift with Agile Design is to deliver quickly while handling changes smoothly.   Instead of doing long requirements phases, and heavy documentation up front, with Agile Design you focus on incremental and iterative delivery, going from low-fidelity to high-fidelity, while getting feedback and improving your design.

Here are 10 ways to make Agile Design more effective:

  1. Avoid BUFD – Big Up-front Design.  Avoid it.  Whenever there is a big lag time between designing it, developing it, and using it, you’re introducing more risk.  You’re breaking feedback loops.  You’re falling into the pit of analysis paralysis.   Focus on “just enough design” so that you can test what works and what doesn’t, and respond accordingly.
  2. Avoid YAGNI – You Aren’t Gonna Need It.  Avoid bloat.  At the same time, avoid scope creep.   “Keep the system uncluttered with extra stuff you guess will be used later. Only 10% of that extra stuff will ever get used, so you are wasting 90% of your time.” – Extreme Programming.org
  3. Embrace Occam’s Razor and KISS (Keep It Simple Stupid).  Use the simplest solution.  Simplicity always win in the long run.  This will help you stay in the game before bogging your solution down and crippling it’s ability to keep up with evolving requirements.
  4. “Test-First.”   If you don’t know the criteria for what good looks like, you’ll have a hard time finishing.  You’ll also get lost among your designs, unless you clarify what your actual test-cases are.   If you keep a small set of useful tests, you can parse through a variety of designs, and find the diamonds in the rough.
  5. Deliver iterative and incremental solutions.   An iterative solution would be decorating the living room.  An incremental solution would be adding a porch to the house.   Deliver useful and usable increments, and then iterate on them to improve them based on real feedback.
  6. Cycle through alternatives.   Fail fast and fail often.  This is another good argument for being able to do rapid prototypes, and low-fidelity prototypes.   You need to cycle through competing solutions.   Do A/B testing.  Do the Toyota Way and create 3 alternative solutions.   Don’t get wrapped up in finding the “best solution.”  In many cases, your best solution will be found by “satisficing.”  This will keep you ahead of the game, and ready to respond to emerging requirements.
  7. Stay customer-connected.  Stay connected with the users who will actually use what you’re making.   Get 5 customers to stand behind it.  Don’t just throw it over the wall down the line, and hope it sticks.  Invite your customers to your side of the wall.
  8. Think Big Picture First.   Put the scaffolding in place.  Focus on the plumbing before the interior decorating.  Solve the big challenges first.   Get the big picture, before getting lost in the details.  Optimize the maxima before the minima.
  9. Get cross-discipline feedback early and often.    The better you can balance cross-discipline feedback, the more reliable your solution will be.
  10. Spike early and often.  Use technical spikes, functional spikes, and user experience spikes to get the risk out.

The last thing you want to do is throw a solution over the wall, and nobody wants it, or you missed the basic scenarios.   That’s why delivering early helps get the risk out, and helps validate your path.

If you’ve ever watched people argue over how they “satisfied the requirements”, but nobody wants to use it, you know exactly what I mean.  People don’t always know exactly what they want, or, even if they do, it’s hard to articulate in a way, that everybody gets it.  But people are way better at recognizing what they like, and knowing whether or not they like something when they actually use it.

Embrace it.

That’s what Agile Design does – it embraces the reality that people get more clarity over time of what good really looks like.

Creating an early feedback loop also forces you to keep your solution easy to maintain and easy to evolve.  Otherwise, it’s very easy to cement your design, and no longer respond to emerging needs.  The key to lasting solutions is they are built to change.

It’s a process of continuous learning and continuous delivery.

Categories: Architecture, Programming

7 Not So Sexy Tips for Saving Money On Amazon

Harish Ganesan CTO of 8KMiles has a very helpful blog, Cloud, Big Data and Mobile, where he shows a nice analytical bent which leads to a lot of practical advice and cost saving tips:
  1. Use SQS Batch Requests to reduce the number of requests hitting SQS which saves costs. Sending 10 messages in a single batch request which in the example save $30/month.
  2. Use SQS Long Polling to reduce extra polling requests, cutting down empty receives, which in the example saves ~$600 in empty receive leakage costs.
  3. Choose the right search technology choice to save costs in AWS by matching your activity pattern to the technology. For a small application with constant load or a heavily utilized search tier or seasonal loads Amazon Cloud Search looks like the cost efficient play. 
  4. Use Amazon CloudFront Price Class to minimize costs by selecting the right Price Class for your audience to potentially reduce delivery costs by excluding Amazon CloudFront’s more expensive edge locations.
  5. Optimize ElastiCache Cluster costs by right sizing cluster node sizes. For different usage scenarios (heavy, moderate, low) their are optimal instances types. Choosing the right type for the right usage scenario saves money.
  6. Amazon Auto Scaling can save costs by better matching demand and capacity. Certainly not a new idea but the diagrams, different leakage scenarios (daily spike, weekly fluctuation, seasonal spike), and the explanation of potential savings (substantial) are well done.
  7. Use Amazon S3 Object Expiration feature to delete old backups, logs, documents, digital media, etc. A leakage of ~20 TB adds up to a tidy ~1650 USD a year. 
Categories: Architecture

Inspiring a Vision

One of my mentees was looking for ways to grow her prowess in “Inspiring a Vision.”  

Here are some of the ways I shared with her so far:

  • Future Picture - One of the best ways that the military uses to create a shared vision rapidly and communicate it down the line is “Future Picture”  (See How To Paint a Future Picture.)

The key with vision is, when possible –

  1. Draw your vision – make it a simple picture
  2. Use metaphors – metaphors are the fastest way to share an idea
  3. Paint the story - what’s the current state, what’s the future state
  4. Paint the ecosystem – who are the players in the system, what are the levers, what are the inputs/outputs
  5. Paint the story over time 
 how does time change the vision 
 and chunk up the vision into 6 month, 1 year, 3 year, five year

And, a powerful tool we use at Microsoft is a Vision / Scope document.

Categories: Architecture, Programming

Sinofsky on How To Analyze the Competition

Sometimes the best way to do something well, is to know what to avoid.  In Ex-Windows Boss Steve Sinofsky: Here's Why I Use An iPhone, Nicholas Carlson shares some tips from Steve Sinofsky on analyzing the competition:

  1. Don't use the product in a lightweight manner
  2. Don't think like yourself
  3. Don't bet competitors act similarly (or even rationally)
  4. Don't assume the world is static

Sinofsky elaborates, and says to use the product deep, and use it over time.  Use the product like it was intended by the designers.  Wrap yourself around the culture, constraints, resources, and more of a competitor.  And, don't take a static view of the world -- the competitor can always update their product based on feedback, or weaknesses you call out.

Categories: Architecture, Programming

Microsoft Secret Stuff

I’m a fan of anticipating the future, and creating the future.  Even speculation helps dream up what’s possible, and be ready for anything, when it happens.  And if you balance that with key trends, you can really stay on top of things.

After all, what’s The Art of the Long View teach us?  While we can’t predict the future, we can better prepare for it by playing out the “what if” scenarios and possibilities.

With that in mind, I did a search on Microsoft secret stuff, and found some interesting things.  After all, Microsoft spends more on R&D than Google and Apple combined.

Here are some of the more interesting articles I found:

Here are my key take aways 


  • Holodeck - transform your family space into a something like Star Trek’s famous holodeck.
  • Kinect Glasses (Fortaleza) - wearable peripherals and augmented reality.
  • Xbox Surface – a 7-inch Xbox tablet.

Kinect Stuff

  • Kinect Fusion - create interactive 3D models.
  • KinectTrack - a new six degree-of-freedom (6-DoF) tracker which allows real-time and low-cost pose estimation using only commodity hardware.
  • SuperKid - Use Kinect to make movies: watch yourself against a virtual background, and interact with virtual props.

Touch and Touch Screens

  • LightSpace - create interactive displays on everyday objects.
  • OmniTouch - displays graphical images onto virtually any surface and transform the projection into an interactive, multi-touch-enabled input.
  • Sidesight - expand a mobile device's multi-touch capabilities beyond the size of its screen.
  • SkinPut - beam interactive displays onto your hand and arm
  • Thinsight - a hardware and software product that allows ordinary LCD screens to become fully functional multi-point touchscreens.

More 


  • Digits - translate a user’s hand movements directly into a virtual space.
  • Foveated Rendering - accelerate graphics computation by a factor of 5-6 on a desktop HD display, by exploiting the fallout of acuity in the visual periphery.

What neat stuff do you see Microsoft working on?

    Categories: Architecture, Programming

    Creating Career Opportunities

    How do you create career opportunities?   You reinvent yourself.

    While you can always hope for things to land in your lap, there are specific patterns I see successful people do.  Among those that continuously create the best career opportunities, here are the key success patterns:

    1. They invest in themselves.  They’re always learning, and taking some sort of training, beyond their day job.
    2. They reinvent themselves.  As a result of investing in themselves, they grow new capabilities.   With their new capabilities, they expand the opportunities they can easily plug themselves into.  For example, a few of my friends started to focus on data science in anticipation of big data, as one of the key trends for 2013 and beyond.  As part of re-inventing themselves, they re-brand themselves to better showcase what they’re bringing to the table.
    3. They build connections before they need them.  It’s always been a game of who you know and what you know, but now more than ever, your network can be the difference that makes the difference when it comes to finding out about relevant opportunities.
    4. They know who’s job they want.   They have a role-model or two that already does the job they want.  The role-model exemplifies how they want to show up, how they want to spend their time, and through that role-model they learn the types of challenges they want to take on, and they get better perspective on what the life-style is actually like.  This not only helps them get clarity on the type of job they want, but it helps when they tell other people the kind of job they want, and can point to specific examples.
    5. They know the market.   They pay attention to where the action is.   They don’t just follow their passion.  They follow the money, too, to know where the growth is, and where there’s value to be captured.  As the saying goes, every market has niches, but not every niche has a market.
    6. They have a mentor, and a “board of directors.”   They use a circle of trusted advisors that can help clue them into where to grow their strengths, and how to find better opportunities, based on what they’re capable of.   It might be their “wolf pack”, but more often than not, it’s a seasoned mentor or two that has great introspection, and can see what they can’t, and they can help them to see things from a balcony view.  Most importantly, the sharp mentors, the wise and able ones, help them to know their Achilles heal, and get past glass ceilings, and avoid career limiting moves.
    7. They have a sponsor.  Like a game of Chutes and Ladders, skilled sponsors help them find the short-cuts, avoid the dead ends, and avoid sliding backwards.

    If you’re wondering where the best career opportunities are, sometimes it’s the job you’ve already got, sometimes you have to go find them, and sometimes, you have to make them.

    Categories: Architecture, Programming

    Stuff The Internet Says On Scalability For May 3, 2013

    Hey, it's HighScalability time:


    (Giant Hurricane on Saturn, here's one in New Orleans)

     

    • 1,966,080 cores: Time Warp synchronization protocol using up to 7.8M MPI tasks on 1,966,080 cores of the {Sequoia} Blue Gene/Q supercomputer system. 33 trillion events processed in 65 seconds yielding a peak event-rate in excess of 504 billion events/second using 120 racks of Sequoia.
    • Quotable Quotes:
      • Thad Starner: the longer accessing a device exceeds 2s, the more its actually usage would decrease exponentially. Thus, he made a claim that wrist watch interface always sitting on one's wrist ready to use should be more successful than mobile phones which have to pulled out of the pocket. 
      • @joedevon: We came for scalability but we stayed for agility #NoSQL
      • @jahmailay: "Our user base is exploding. I really wish we spent more time on scalability instead of features customers don't use." - Everybody, always.
      • @bsletten: I don’t think it is a coincidence that the words eval() and evil are so close.
      • @RCSecure: Maybe Gov should stop deploying crappy #CyberSecurity instead of Surveiling Citizens
      • @davidpav: "This is what Netflix does - after each deployment creates AMI for faster scaling up"
      • @franzgranlund: Rewrote my little batch-processing application using #akka . 20% performance increase just like that - and now it is easier to scale.
      • @marshray: Ouch, that's kind of dismal. Perhaps we need a new term: "eventual scalability"
      • @adrianco: RT @rbranson: @cscotta load average is the worst thing ever. Slowly trying to evangelize it's demise as a reasonable metric. < +1 every 15 m

    • MIT Tech Review picks 10 breakthrough technologies: Smart Watches (really?), Memory implants (deciphering the code by which the brain forms long-term memories), Additive manufacturing (3-D printing), Supergrids (finally says Edison, DC powergrids), Temporary social media (sigh), Prenatal DNA sequencing (great for full lifecycle ad targeting), Baxter (compliant robots), Deep Learning (the singularity is near), Ultra-Efficient Solar Power (now we are talking). Prediction: We'll laugh at all this filter control talk once we have all of Google's datacenters and knowledge graph software implanted in our heads.

    • IBM on making movies using atoms as pixels. Characterization was a little thin but the plot was magnetic.

    • Lesson from Airbnb: Give yourself permission to experiment with non-scalable changes. Building better is better than building bigger.

    • Here's a short review by me on CyberStorm by Matthew Mather. Matthew is also the author of the most excellent Atopia Chronicles, a sprawling exploration of "artificial intelligence, distributed computing, nanotechnology, and the full range of humanity." CyberStorm is a chilling blow by blow of what could happen in a real cyber attack. As a programmer it's the implied idea of a kind of Crises OS built on a mesh of smartphones that I found most fascinating. Not much seems to be done in this area and even the how-to of writing such applications is rarely discussed. Could be interesting.

    Don't miss all that the Internet has to say on Scalability, click below and become eventually consistent with all scalability knowledge...

    Categories: Architecture

    Announcing the Release of WebMatrix 3

    ScottGu's Blog - Scott Guthrie - Wed, 05/01/2013 - 20:53

    I’m excited to announce the release of WebMatrix 3.  WebMatrix is a free, lightweight web development tool we first introduced in 2010, and which provides a great, focused web development experience for ASP.NET, PHP, and Node.js.  

    Today’s release includes a ton of great new features.  You can easily get started by downloading it, and watching an introduction video:

    clip_image002 clip_image004

    Some of the highlights of today’s release include deep Windows Azure integration, source control tooling for Git and TFS, and a new remote editing experience. 

    Windows Azure Integration

    With WebMatrix 3, we are making it really easy to move to the cloud. 

    The first time you launch WebMatrix 3, there’s an option to sign into Windows Azure.  You can sign in using the same credentials you use with the Windows Azure Management Portal:

    image

    Once you are signed-in your Windows Azure account and subscriptions are integrated directly within WebMatrix.  You have the option to create up to 10 free sites on Windows Azure: 

    image

    You can use the My Sites”button to browse and edit the web sites you already have hosted on Windows Azure.  You can also use the New button to directly create and host new web sites on Windows Azure – and create either a blank new site, or a site created from the Windows Azure Web App Gallery (which lets you start with templates like Umbraco, WordPress, Drupal, etc):

    image

    In this case we’ll create a new web site using the popular Umbraco CMS solution – one of the templates in the Windows Azure Web Site Gallery:

    image

    When you select this template, WebMatrix can help you create a new Web Site to host it on Windows Azure, and associate all of the publishing information you need to publish it and keep it in sync with your editing environment within WebMatrix:

    image

    Once created you get a tailored experience within WebMatrix that provides integrated Umbraco (or WordPress or Drupal, etc) editing functionality inside the tool:

    image

    And WebMatrix provides the ability to open/edit any appropriate files in it with editing/ and code intellisense support:

    image

    And when you are done you can one-click publish the site to Windows Azure using the Publish command in top left of the tool.  WebMatrix will provide real-time feedback as it uploads and publishes the site:

    image

    The end result is a simple, fast and super effective way to edit your sites locally and host and manage them in Windows Azure. 

    Watch this great video as Eric build a site with WebMatrix 3 and deploys it to Windows Azure.

    Source Control with Git and TFS

    One of the most requested features in WebMatrix 2 was support for version control.  WebMatrix 3 now supports both Git and TFS.  The source control experience is extensible, and we’ve worked with several partners to include rich support for Team Foundation Service, CodePlex and GitHub:

    clip_image010

    The Git tooling works with your current source repositories, configuration, and existing tools.  The experience includes support for commits, branching, multiple remotes, and works great for publishing Web Sites to Windows Azure:

    clip_image012

    The TFS experience is focused on making common source control tasks easy.  It matches up well with Team Foundation Service, our hosted TFS solution that provides free private Git and TFS repositories.

    Watch these great videos of Justin giving a tour of the Git and TFS integration in WebMatrix 3

    Remote Editing

    In WebMatrix 2, we added the ability to open your Web Site directly from the Windows Azure Management Portal.  With WebMatrix 3, we’ve rounded out that experience by providing an amazing developer experience for live remote editing of your sites.   The new My Sites gallery now allows you to open existing web sites on your local machine, or to remotely edit sites that are hosted in Windows Azure:

    image

    While working with the remote site, IntelliSense and the other tools work as though the site was on your local machine.  But when you save changes it pushes them directly to the remote hosted site.  This makes it ideal for when you want to make quick changes in a hurry.

    If you want to work with the site locally, you can click the ‘download’ button to install and configure any runtime dependencies, and work with the site on your machine:

    clip_image016

    Watch this video of Thao showing you how to edit your live site on Windows Azure using WebMatrix 3

    Summary

    WebMatrix 3 includes a seamless experience for working with sites in Windows Azure, source control support for working with Git and TFS, and a vastly improved remote editing experience.  These are just a few of the hundreds of improvements throughout the application, including an extension for PHP validation and Typescript support. 

    You can easily get started with WebMatrix by downloading it for free, and watching an introduction video about it:

    clip_image002 clip_image004

    We look forward to seeing what you build with the new release!

    Hope this helps,

    Scott

    P.S. In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: twitter.com/scottgu

    Categories: Architecture, Programming