Tagged: oredev Toggle Comment Threads | Keyboard Shortcuts

  • danielsaidi 8:43 pm on January 21, 2012 Permalink | Reply
    Tags: , doc list, gamification, ginger cake, jim benson, kanban, oredev, short software half-life, spike and stabilize   

    Øredev 2011 in the rear-view mirror – Part 6 

    Øredev logo

    This is the sixth and final part of my sum-up of Øredev 2011. Read more by following the links below:

    This is the final part of my Øredev sum-up. It will cover the last three sessions I attended to and conclude my visit to Øredev.

     

    3:4 – Jim Benson – Healthy Projects

    After gathering some key-words from the audience, Jim’s defined healthy projects to be:

    • Happy
    • Productive
    • Stress-free
    • Focused
    • Nice to the workers

    He gave a good description of when things tend to go wrong within an organization, visualized with the following organizational structure (a single node topmost and several nodes bottommost):

    • Company (has many portfolios)
    • Portfolios (has many projects)
    • Projects (has many tasks)
    • Tasks

    Imagine someone working at task level being “promoted” to project level, e.g. becoming product owner. If this person cannot understand his new area of work and keep focusing on the details of task level, it will lead to micro management. The same goes when moving from project to portfolio and portfolio to company level.

    Speaking about rules, Jim states that when you add a lot of rules, you will also have to introduce a process. If the rules are then hard to follow, people will fail…and when they do, they will blame the process. Methods like Kanban, for instance, visualize the work, minimize the amount of ongoing work and lead to healthier projects.

    A good technique that can be used to visualize how the team feels is to have it marking the scrum/kanban notes with an illustration that describe how they feel after completing a task. I found this to be a very good idea! It is so simple, yet communicates so clearly how the team is feeling.

    This session grew on me afterwards. While sitting there, I found it hard to stay focused and found large parts of the session rather passable, but after reading my notes afterwards, I found some golden gems.

     

    3:5 – Doc List – Development is a game

    Okey, so this session was about Doc having an idea…and wanted a lot of stuff to happen. His question was, how do we measure how good we are at what we do and what are the tools of measurement that we should use? Certificates? Level of success?

    Doc asks us – why can’t life itself be a game? Why can’t we have rewards in our professions (actually, Visual Studio has just introduced achievements, so we are getting there)? Why can’t we have quests? Want to measure how good a person is – give him a quest! Want to measure how good a team is – give them a group quest!

    Doc wants to create a globally applicable system that ranks people according to what they know. With this system, if you need “a level 24 Java developer”, you will have a specification of what a level 24 Java developer knows…and a list of persons who are at that level (since it is measurable). Doc wants to build a global community for this and wants…

    …well, there you have my biggest problem with this session. Doc is a really charming man who has been around a while and has a great rep, but…he wants a lot of things and talks about it without having created nothing so far. So, he just describes a vision.

    I could have found the session interesting, and Doc convincing, if he at least had started. So, I eagerly await Doc to prove me wrong and announce that he has started working on that global system of his. Until then, I will lay my focus elsewhere.

     

    3:6 – Dan North – Pattern of effective delivery

    With Dan’s keynote being the undeniable highlight of Øredev for everyone that I know saw it (I did not, unfortunately), I really looked forward to this session…as did the entire Øredev. The room was packed.

    Dan spoke of some exciting new patterns, like:

    • Spike and Stabilize (easy, semi-effective) – try something out, then build it well. Optimize for discovery.
    • Ginger Cake (semi-hard, semi-effective) – break the rules once you go senior…”it’s like a chocolate cake, but with ginger”
    • Short software half-life – how long does it take, before you have to fix a bug? Optimize for throwawayability.

    No, in fact, I did not find this to be a interesting session at all. In fact, I found it rather pointless, which was a huge disappointment.

    Dan, like many of the big speakers, is very charming and passionate when on stage…but I cannot help to feel that I perhaps should choose more concrete sessions than these “inspired and fun” ones, the next time I attend to one of these conferences. I am obviously not the target audience.

    Please watch the video? Do you disagree with me? Let me know in the comment field below.

     

    Conclusion

    Øredev 2011 was a fantastic conference, with high mountains and, unfortunately, some rather deep valleys. Next year, I hope to see even more local talents, and more odd and exciting selections of speakers. How about a grave russian who (in bad English) demonstrates some kick-ass piece of technology without one joke being said or charming smile being fired?

    I would like to see that. Maybe next time.

    Anyway, a big, BIG thank to the Øredev crew – you delieved a really inspiring conference that I still return to mentally.

     
    • Henrik 9:11 pm on January 21, 2012 Permalink | Reply

      Agree, Dan’s keynote was much better. This was a bit hard to grasp.

  • danielsaidi 9:03 pm on January 20, 2012 Permalink | Reply
    Tags: afferent coupling, cvs, , efferent coupling, , , , kinect, , oredev, stack overflow, tim huckaby, windows 8   

    Øredev 2011 in the rear-view mirror – Part 5 

    Øredev logo

    This is the fifth part of my sum-up of Øredev 2011. Read more by following the links below:

    So, yeah…this sum-up was supposed to be a rather short thing, but has grown out of proportions. I will try to keep it short, but the sessions deserve to be mentioned.

     

    2:7 – Greg Young – How to get productive in a project in 24h

    In his second session at Øredev, Greg spoke about how to kick-start yourself in new projects. First of all, do you understand what they company does? Have you used your the product or service before? If you do not have an understanding of these fundamental facts, how will you deliver value?

    Then, Greg described how he quickly get up in the saddle. He usually start of with inspecting the CVS. Project that have been around for a while and still have tons of checkins, could possibly be suffering from a lot of bugs. Certain areas that are under the burden of massive amounts of checkins could possibly be bug hives.

    Note these things, it could quickly tell you where in the project it hurts. Naturally, a lot of checkins do not automatically indicate bugs or problems. The team could just be developing stuff. However, it will give you someplace to start. At least, a lot of checkins do mean that someone is working in that particular part of the project.

    These are very simple steps to take, but to actually be able to discuss the project after just an hour or so with the CVS, and maybe even pin-pointing some problems, will give your customer the impression that you are almost clairvoyant…or at least that you know what you are doing, which is why they pay you.

    If the project is not using continuous integration, at least set it up locally. It does not take long and will help you out tremendously. To be able to yell out to someone who breaks the build the second they do it…well, it will give you pleasure at least.

    Greg then went on to demonstrate how you can dig even deeper, and his tool of the day was NDepend. Greg’s demo was awesome, and Patrick should consider giving him…well, a hug at least. I, who without that much success demonstrated NDepend in my organization a while back, could quickly tell that I have a long way to go in how you present a tool to people.

    With NDepend, Greg demonstrated how to use the various metrics, like cyclomatic complexity and afferent/efferent coupling. He went through the various graphs, describing what they do and how they can be used and told us to specially look out for black squares in the dependency matrix (they indicate circular references) and concrete couplings (they should be broken up).

    All in all a very, very great session that also gave me a lot of things to aim for when holding presentations myself. As a consultant, you should not miss this video.

     

    3:1 – Keynote – Jeff Atwood – Stack Overflow: Social Software for the Anti-Social Part II: Electric Boogaloo

    I will not attempt to cover everything said in this keynote. Instead, you should go here and wait for the video. It is filled with fun gems, like when Jeff describes how stuff that are accepted in a web context would be really strange if applied in real life. For instance, FB lets you keep a list of friends. Who has a physical list of friends IRL?

    Anyway, Jeff spoke about gamification and how we can design our service like a game, using a set of rules to define how it is meant to be used, award those who adapt to the rules…and punish the ones that do not. The basic premise is that games have rules and games are fun…so if we design our web sites as games, they should become fun as well.

    Well, at least, rules drastically simplifies how we are supposed to behave. It tells us what to do. Sure, it does not work for all kinds of sites, but for social software, gamification should be considered. Games, in general make social interaction non-scary, since everyone has to conform to the rules. Just look at the world, and you will know that this is true.

    So, when designing Stack Overflow, Jeff and Joel did so with gamification in mind. You may not notice it at first, but everything there is carefully considered. For instance, people use to complain that you cannot add a new question at the very start page. This is intentional. Before you add a question, Stack wants you to read other questions, see how people interact and learn the rules.

    Stack adapt several concepts from the gaming world. Good players are awarded with achievements and level up as they progress. There are tutorials, unlockables etc. Without first realizing it, Jeff and Joel ended up creating a Q&A game that consists of several layers:

    • The game – ask and answer questions
    • The meta-game – receive badges, level up, become an administrator etc.
    • The end-game – make the Internet a little better

    This design makes it possible for Stack Overflow to allow anonymous users, unlike Facebook who decided to only allow real names in order to filter out the “idiots”. Since Stack Overflow award good players, bad players are automatically sorted out. The community is self-sanitizing. People are awarded with admin status if they play good enough. It’s just like Counter Strike, where you are forced to be a team player. If you are not, the game will kill you 🙂

    I could go on and on, but Jeff says it best himself. Although some parts are simply shameless Stack commercial, I recommend you to check out the video.

     

    3:2 – Tim Huckaby – Building HTML5 Applications with Visual Studio 11 for Windows 8

    Tim has worked with (not at) Microsoft for a loooong time and is one charismatic guy, I must say. What I really appreciated with his session was that it seemed a bit improvised, unlike most sessions at Øredev. What I did not like quite as much, though, was that it seemed too improvised. Due to lack of time and hardware issues, Tim failed to demonstrate what I came to see – HTML5 applications with VS11.

    Tim begun with stating that he hates HTML…but that he loves HTML5, which is “crossing the chasm”. This means that it is a safe technology to bet on, because it will be adapted. How do we know? Well, the graph below illustrates when a technology is “crossing the chasm” in relation to how people adapt it:

    The Chasm Graph :)
    So when a technology is “crossing the chasm”, get to work – it will be used 🙂 I wonder how the graph would have looked for HD-DVD? Tim also thanked Apple for inventing the iPad (which he calls a $x couch computer). Thanks to the iPhone and the iPad, Flash and plugins are out and HTML5 is in.

    Large parts of the sessions were fun anecdotes, like when he spoke about how Adobe went out with a “we <heart> Apple” campaign and Apple responded with an “we <missing plugin> Adobe”. Hilarious, but did we learn anything from these anectodes? Well, time will tell.

    • Tim went through some browser statistics, explained why IE6 is still so widely used (damn those piracy copies of Win XP in China)…and ended up with some small demos, but faced massive hardware problems and promised us some more meat if we stayed a while. I stayed a while (I even attended the next Tim session) but the demos were not that wow.

    So, how did Tim do in his second session? Read on!

     

    3:3 – Tim Huckaby – Delivering Improved User Experience with Metro Style Win 8 Applications

    Tim started this session talking about NUI – Natural User Interfaces and some new features of Windows 8, like semantic zoom, a desktop mode behind Metro (it looks great, just like Win 7!), smart touch and…a new task manager (he was kinda ironic here).

    Tim demonstrated Tobii on a really cool laptop with two cameras, which allow it to see in 3D.  The rest of the session was…enjoyable. I cannot put my finger on it, but I had fun, although I was disappointed at what was demonstrated. The Kinect demo was semi-cool, a great Swedish screen was also interesting and Tim also hinted about how the new XBOX Loop and a new Kinect will become a small revolution.

    I really do not know what to say about this. Watch the video. You will have fun.

     
  • danielsaidi 7:45 am on January 17, 2012 Permalink | Reply
    Tags: azure, cdn, , marc mercuri, , oredev, service bus, udi dahan   

    Øredev 2011 in the rear-view mirror – Part 4 

    Øredev logo

    This is the fourth part of ny sum-up of Øredev 2011. It has taken quite a long time to get this summary finished…so I will write a bit less about each session in this finishing post and refer to external resources instead of spending a lot of lines describing products and concepts.

    For more Øredev, check out the previous parts in this sum up as well:

    Okey, here we go…but first, I believed that I would be able to cover all remaining sessions in this post, but I will not. There will be a fifth part…and possibly a sixth.

     

    2:4 – Udi Dahan – Who needs a Service Bus anyway

    Udi Dahan, founder of NServiceBus, had a nice session about why we should consider using a service bus. He begun with the history of the service bus, speaking about CORBA, the rise and fall of the Broker architecture and how a service bus differ from a broker (a broker is in the middle of everything, a service bus is everywhere).

    A bus is distributed everywhere, plugged into each part of the system. There is no remoting, since none is needed. While a broker is in the middle, tying everything together, a bus communicates with messages and makes sure that all subscribers receives the messages they should receive.

    Udi finally demonstrated NServiceBus and how to set it up in various ways. The demo was pretty cool, but hard to describe, so if you have not checked out NServiceBus, or any other buses for that matter, make sure to do so. They are great for certain tasks.

     

    2:5 – Jeff Atwood – Creating a Top 500 Internet Website in C# for Dummies

    When you publish your kick-ass web site for the world to see and use, how do you optimize it to stand the traffic? Jeff knows, and shared his four greatest means of optimization:

    • Static content
    • Reverse proxy
    • Multitenancy
    • Caching

    A CDN (Content Delivery Network) is a must have. If you do not want to use a cloud-based service like Amazon S3, at least put your content on a simply configured server of your own, separate it from your logic and you’ll be able to distribute your content over the world, grabbing the one closest to your users when they require it.

    A reverse proxy distributes incoming requests over a number of internal servers. With load balancing capabilities, it can drastically improve the amount of traffic your site can handle. Just make sure to make it sticky, if a client has to be redirected to the same server for each request.

    Multitenancy means that one application does many things. Having several applications on one server makes each perform more poorly than if one is configured to do several things. So, have one application handle several sites and services and you’ll be off to prestanda heaven.

    Caching means…well, yeah, we all know. The issue is how to cache. Having one cache per server may cause inconsistency, but one that is shared by all may cause poor performance. Jeff use MySQL for cache storage. He has one per app and one that is shared by all and syncs with the individual cache instances.

    Jeff also spoke about serialization and how you must consider your serialization options – binary serialization may crash if the assembly changes and xml may be CPU intense. A final piece of advice was to design your systems as if you have a farm, caching etc…even if you do not have one at the moment.

    A great, but intense session. I hope my description gave it justice.

     

    2:6 – Marc Mercuri – Cloud First Services

    Marc covered a lot of information in his session. He started of with stating that you must adapt a completely different mindset when you develop for the cloud (how come these Americans make such obvious things sound smart when they say it?) and design all new applications as if they are to be run in the cloud.

    Marc went through various hosting alternatives (on premise, cloud-based and partner hosted) and some of the popular service models:

    • Infrastructure as a service (Amazon EC2 etc.) – you get a server somewhere and do the rest yourself
    • Platform as a service (Azure, AppEngine etc.) – a configured environment to which you add your applications
    • Software as a service (nuff commercial 🙂 – free or commercial software, ready to be used by you and others

    If we break down our services into well-defined capabilities, workloads, solutions, roles and services, we will be able to:

    • scale them independently of eachother
    • replace one service with another one with the same capabilities
    • move, exchange or delete one service, without making the rest fail

    With cloud-based services, we must think async for all tasks, designing them to be stateless and always assume that services we use will not be available at the moment. Designing your services this way will prepare them for what will come – services that are not available at the moment 🙂

    And now for some great advice in clutter form. Use distributed cache, queues, external data storage etc. and you will be able to easily scale out when you create that killer-app that the whole world wants to use. Consider your storage alternatives. Some data is perfect to store in a relational database, while other may fit better in a NoSQL or BLOG storage. Boost availability with redundancy (multiple instances) and resiliency (how to recover).

    And finally, some final words of wisdom:

    1. Moving to the cloud is NOT equivalent to designing for the cloud
    2. Believing that moving to the cloud means moving all or nothing, is plain wrong
    3. Platform SLA:s are not Application SLA:s. Assuring uptime does not mean covering your application logic.
    4. Bad applications will not behave better in the cloud.
    5. Support and operations are not automatically automised

    Phew, not bad for a one hour session, huh? And then, I have even excluded the Azure-specific parts.

     
  • danielsaidi 11:41 pm on December 6, 2011 Permalink | Reply
    Tags: cqrs, , ddd, event sourcing, , oredev, rickard öberg, uncertainty   

    Øredev 2011 in the rear-view mirror – Part 3 

    Øredev logo

    This is the third part of ny sum-up of Øredev 2011.

    I will label each session with day:order to satisfy all structure freaks (myself included) that read this.

     

    2:1 – Dan North – Embracing Uncertainty – the Hardest Pattern of All

    If there is one session I really regret not attending to, it has got to be this one. Everyone I spoke to afterwards were totally blown away by Dan’s keynote about how we humans strive to avoid uncertainty at all cost, even in situations where uncertainty would be a much better mode to be in than being certain.

    Uhm…I’ll just point you guys straight to Daniel Lee’s excellent blog, where he write more about this session.

    Dan North

    The quote “Fear leads to risk, risk leads to process, process leads to hate… and suffering and Gantt charts”, “We would rather be wrong than be uncertain!” and the way Dan reasons about how faith become religion makes this the top session that will keep me waiting for the Øredev videos.

     

    2:2 – Greg Young – How to not apply CQRS

    I just love Greg. After this session, I stormed out of the room and bursted out “I think it is SO cool that Greg is, like, the Henry Rollins of software engineering”, on which a complete stranger turned around, equally happy, and almost shouts “I KNOW!”. A minute or so later, I happen to overhear a conversation, where one guy says “Wow, Greg looks JUST like Phil Anselmo”.

    Greg Young

    Henry Rollins?

    Yeah, Greg is the personification of all those metal vocalists we always wanted to be (or be friends with) and lets us embed ourselves in a thick layer of ignorance that allows us ignore that we are a developer converence. Oh no, we are almost those rock stars we dreamt of to become…and almost friends with Phil and Henry. I also think I saw a little bit of Mike Patton in his eyes, and a piece Christian Bale in the way he speaks.

    Henry Rollins

    Greg Young?

    All this despite the fact that Greg wears Five Finger Shoes. Five Finger Shoes!

    That is quite an achievement.

    But hey, what did he talk about, I hear you ask. Well, I frankly do not remember. No, that was a lie. Greg talked about how one good way to fail is to apply CQRS everywhere within a monolithic system. CQRS is not a top level architecture. It requires a bounded context. So, to apply CQRS in a non-core context, and without a bounded context, is an almost fail-proof way to fail. With CQRS applied everywhere, nothing can change.

    Greg then went on to speak about CQRS and DDD, and the dangers of imaginary domain experts. Who can be considered to be a domain expert? The consultant who have worked with a system for a while, who maybe even answer to another consultant? Or is it an employee who have worked with the domain for a couple of years? How about twenty years?

    This is really important, since CQRS is business-centric, which is why CQRS and DDD without domain expertise does not work. The result will become like playing the telephone game and translating Shakespeare with Google Translate. BA:s are really good at asking the right questions, but they are not domain experts.

    As an exercise, Greg talked a bit about Programming as Analysis, which I’d like to try. The point is that you are supposed to build a system for a domain that you do not know. Now, timebox your access to the domain expert to two hours. That is it. In two hours, you  have to find out everything you need to build your system. The entire system. Sure, you will fail. Fail hard. But, in doing so, you will come up with a bunch of new questions. So you throw everything away. Everything. Then you do it all again. Two hours. Build the entire system. Then again. Then again.

    Greg finally summed up his session with pointing out the most certain way to fail – by learning CQRS by building a CQRS framework. Instead, focus on the business value of applying CQRS. He finished his great session with calling frameworks “crack for architects” and  stating that frameworks are evil.

    Great one, Greg. Thanks a million. Now, drop those five fingers and I would not hesitate to put a poster of you up on my wall.

     

    2:3 – Rickard Öberg – Event Sourcing explained

    Next to CQRS, which I have not had the pleasure of applying (maybe I should build my own CQRS framework…or?), Event Sourcing is something that I’d love to try out.

    Rickard Öberg

    Rickard started with describing a common architecture:

    Client <- Service facade <- Domain <- Storage

    and how with Event Sourcing, things look a bit different:

    Client <- Service facade <- Domain (Commands -> Events) <- Event storage

    We do not store state – we store events, which is a huuuuge difference. By storing the events, we can replay all the events that has affected an entity during its lifetime, and in such a way build it up from scratch to its current state. In order to avoid really heavy operations, we can store snapshots as well. With snapshots, an event stack like this one (the latest event is topmost):

    Event
    Event
    Event
    Event
    Snapshot
    Event
    Event

    is handled by starting with the lastest event. As long as the item is not a snapshot, we keep it for later. Once we reach a snapshot, we grab that representation, then apply all the events that we have kept for later. This way, we do not have to replay the entire life of the entity, just a part of it.

    That is basically it.

    Rickard, however, then went on to talk a bit about his event sourcing framework. Obviously suffering after Greg’s recent framework burstout, Rickard had the balls to still insist that his framework was really good…and that he likes to use it. I for one believe him.

    With event sourcing, report generation becomes a breeze. Also, you never loose data. If I add 5000 to my bank account then withdraw 3000, and no events are stored, all I know is that I now have 2000 more than before I started. Sure, maybe the system writes transactional details to the log, but with event sourcing, the event storage becomes the log.

    Due to its log-like nature, event sourcing also simplifies debugging. Who did what when? With event sourcing, nothing gets thrown away. My events is what makes my entities look the way they do. If an event accidentally was not saved, that is bad, sure, but it is another problem. My entity does not know about it, since the event does not exist.

    Event sourcing continues to interest me. Maybe one day, I will actually get around to use it?

     
  • danielsaidi 8:50 pm on December 1, 2011 Permalink | Reply
    Tags: api, , , fredrik mörk, , , nathan totten, neil ford, oredev, phil haack   

    Øredev 2011 in the rear-view mirror – Part 2 

    Øredev logo

    This is the second part of ny sum-up of Øredev 2011.

    I will label each session with day:order to satisfy all structure freaks (myself included) that read this.

    1:4 – Phil Haack – Building Mobile applications with ASP.NET MVC4, HTML5 and jQuery Mobile

    This session was quite interesting, since Phil discussed a lot of aspects of mobile browsing and how ASP.NET MVC4 can help you out by introducing .

    Adaptive rendering will be added to the default web application template, which will cause the page to automatically render differently depending on the size of the screen. If you want to view how adaptive rendering works, check out Zurb Foundation. In other words, ASP.NET MVC4 does not introduce adaptive rendering to the world – there are already plenty of free options that you can greb and use directly after reading this post. It’s just a convenience.

    Another new, cool feature is that it is possible to create device-specific variations of the same view, so that Index.cshtml is the default one and Index.iphone.cshtml is the variation that you’ll see when viewing the site in your iPhone. Custom modes can be registered in global.asax, which means that you are entirely free to tailor your own set of custom views.

    Phil also demonstrated using iBBDemo2 for simulating an iPhone when browsing the web. Quite handy if you want to easily be able to try out your custom views.

    All in all, a quite interesting session, although Phil did not seem too enthusiastic about it. Also, the wifi at Øredev was a disaster, and caused several speakers a lot of problems. I really hope they improve this until next year.

    1:5 – Nathan Totten – Facebook Development

    Nathan was yet another speaker who got hit hard by the wifi problems, as he demonstrated how to develop apps for Facebook. I really enjoyed this session, despite the technical problems and the fact that I already have developed Facebook apps. Since I am self-taught in doing so, though, listening to Nathan explaining several parts that I have not gotten around to work with before, was a great take-away.

    Nathan talked about various types of Facebook applications, like iFrame apps, web sites with Facebook Connect, mobile applications, desktop applikations (like Spotify) etc. and how they use OAuth 2.0, REST services, the Facebook Graph API and FQL to integrate with Facebook. He also discussed the JavaScript and C# Facebook SDK:s. His advice was to use the JavaScript SDK whenever possible, and to a server-side SDK whenever the integration should be more invisible.

    Finally, Nathan demonstrated how he works with local and live applications, e.g. if you are developing an application locally (running on localhost) and have it live as well. He then creates two separate FB apps – one that is bound to the live site and one that is bound to localhost. Quite convenient. He also told us that  FBML is dead, so do not use it ever again 🙂

    1:6 – Fredrik Mörk – API – the hidden UI

    The first Swedish speaker I got around to listen to was Fredrik Mörk, who spoke about how we have to give our API:s the same tender loving care that we give our UI:s. Users shun bad GUI:s, while developers shun bad API:s, so we should put some effort into our API designs.

    An API must be discoverable, but how? Always assume that the user knows nothing. So, adapt conventions used by other API:s, so that developers instantly recognize the API instead of having to remember it. even if they have not used it before. This involves making it possible to navigate through the API, adapting naming conventions (delete or remove, store or save etc.), put an equal amount of attention to all parts of the API and…take care of the API like you do with other parts of your systems.

    Fredrik advised us to always expose as primitive as possible, to make the API accessible to as many as possible. Always choose abstract before concrete…and choose your abstraction according to the purpose. For instance, if you expose an IList instead of an IEnumerable, you are communicating that you expect your users to insert stuff into it.

    Fredrik’s view upon an API is that once it is out there, it is no longer yours to change. A GUI can change…an API cannot. But, be careful with inserting stuff into your API just because a user wants it in there. It will ultimately bloat your API. And when you insert stuff, be intentional. Do not let chance determine where a feature ends up and what it is called.

    All in all a good session…and quite liberating with a Swenglish accent instead of the spotless American, Scottish and British ones that dominated the rest of the day.

    1:7 – KEYNOTE: Neil Ford – Abstraction Distractions

    After a long day, we decided to skip this session and go for a short nap before hitting a meat restaurant. I have not spoken with anyone who attended it either, so I am at a loss whether it was good, bad or just meh. It will be interesting to check out the video once it is released.

     
  • danielsaidi 11:17 pm on November 23, 2011 Permalink | Reply
    Tags: alexis ohanian, async, await, gary short, jon skeet, oredev, reddit   

    Øredev 2011 in the rear-view mirror – Part 1 

    Øredev logo

    This is the first part of my sum-up of Øredev 2011. Read more by following the links below:

    I will label each session with day:order to satisfy all structure freaks (myself included) that read this.

    About Øredev

    Two weeks ago, I attended to the Øredev Developer Conference in Malmo, Sweden form Wednesday to Friday. It was truely inspiring, and I would like to share my experience. I will write about the sessions I attended to, the ones I missed (but watched on screen outside the conference rooms) and the ones I heard a lot of good stuff about, but either missed or had to opt-out.

    I have deliberately waited two weeks with writing this summary, since I wanted it to be objective and not influenced by the oh-so impressed mode that I was in directly afterwards. I will sum up the sessions over a couple of days, so my experience of Øredev will consist of a number of posts. I will label each session with day:order to satisfy all structure freaks (myself included) that read this.

    Finally, before beginning to write (quite a contradiction), I just want to thank my employer – Cloud Nine – for deciding to send me as one of three. It was a fantastic experience.

    1:1 – KEYNOTE: Alexis Ohanian – Only your mom wants to use your website

    After an early morning flight, we arrived at Øredev a bit too late for the morning’s keynote with Reddit co-founder Alexis Ohanian. The doors to the keynote were closed, but the keynote was displayed on screen just outside, so we managed to catch a short glimpse of it.

    Alexis talked about how to convince people that your product is worth their precious time, and that companies tend to ignore users experience…and thus their customers. He mentioned some interesting scenarios that we have gotten used to as Internet users, but that does not deliver good experience, such as online airline ticket search engines that return a huge amount of tickets in a paginable list.

    I attempted to make out the most of the real-time illustration that was being made of the keynote (and of all other keynotes), but will watch the video once it is released instead. People who attended it told me it was quite good, although Jeff Atwood threw Reddit a pinch during his Friday keynote – more on that later.

    1:2 – Jon Skeet – C#5 Async 101

    My first session was one of many at Øredev, where a distinct British, Scottish or American accent, together with an almost over-the-top engagement, seem to be two of the key-criteria to be invited as a speaker (more on this in my final conclusion). Jon was very inspiring, though, and demonstrated the new async keyword, which will be shipped together with C#5.

    Jon talked about how async operations have been around since .NET 1.0, but how they always have been jumpy and resulted in spaghetti code. I agree, although working with async operations in JavaScript over the years have made me used to handling async callbacks. The new async keyword, though, together with the new await keyword seems like a clean and promising tool for writing async operations.

    The code becomes really clean. In fact, it looks just like “ordinary” non-async code, with a few new keywords. Another really cool thing about it all is awaits are potential pause points. If .NET has all the data it needs to return a result, it will do so without going into async mode. All this, while the code looks almost exactly the same as it would do without the asyncs and awaits.

    Instead of throwing us a bunch of examples of how to use this new feature, Jon showed us a few, sure, but then also took the time to actually show us how it is implemented and how to use the Task classes in C#4. As a developer, I found this extremely entertaining, although I feel a bit disgusted at how low my opinion of “entertaining” has sunken over the years. Can’t wait to try it out, though.

    Oh, and one final thing. Jon was very clear about pointing out that async != parallell, so maybe I should forward that as well 🙂

    1:3 – Gary Short – .NET 4.0 Collection Classes Deep Dive

    This session was one that I found really interesting while listening to it, but that I afterwards doubt brought me that much to work with in my daily life as a system developer. However…

    …once more, a charismatic developer with an attitude…and a distinct Scottish accent. You have probably guessed it already…the fact that I have a hangup on the accents is that I deeply envy people with Scottish (http://www.youtube.com/watch?v=KrCMB7N5V1s) or British (http://www.youtube.com/watch?v=Ii2ZyhWvxos) accents. If I could have one wish come true (sorry, peace on earth), it would be to have one. So, now you know.

    So, yeah…Gary had one for sure…and man, could he talk. He spoke a lot about list operations and how NOT to populate a list. For instance, did you know that when you add your first item to the list, its capacity grows to 4…and that when that is no longer sufficient, it grows to 8, then 16, then 32, 64…? Well, neither did I. Gary suggested to initialize the list with an integer parameter, e.g. new List<string>(10), which will cause it to grow with a fixed intervals when needed.

    He also spoke about not using Add in a loop, that AddRange is better than sequential Add operations and how XAt is better than X (RemoveAt instead of Remove etc.) since it executes at fixed time, no matter how many items you have in your list. Combined with graphs of how much slower certain operations work when the size of the list grows, Gary really exhausted the subject. He also went through sorting and how the various sorting algorithms perform and ended the session by going through various collection types.

    So, sure, Gary knows a lot about collections, and no one can blame him for not delivering what the title of the session indicated…but I already knew about most of the stuff and feel like I maybe should have attended another session. For people not knowing about the various collections, though, I am sure it was a great run.

     
c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Reply
e
Edit
o
Show/Hide comments
t
Go to top
l
Go to login
h
Show/Hide help
shift + esc
Cancel