Everybody’s agile. Everybody’s having backlog and doing scrum (whatever that means). Everybody’s talking about one week sprints and two week sprints. And it’s so fun and modern and minimum viable product and burn down charts and … and I’m not so sure about sprints.
Release often. So here we are. Version 126.96.36.199 of ADO.NET provider for Firebird is ready for download to serve you until … until the new version comes out.
Task Parallel Library (TPL) and
await functionality completely changes the game we - developers - were playing last years. Because it changes the game so much there’s quite some implementation details that, when you want to play A game, need to be considered. It’s not that the implementation is wrong or attacking the problem from wrong direction. It’s just a trade-off. Basically to make a A- game ready without any additional learning.
After I wrote the earlier piece, I realized there’s maybe another option. And then after thinking about it I realized it’s not that black and white either.
Spending last few days travelling I got into thinking about article I read week or two before about companies more and more deleting people’s emails when they are on vacation. I think it’s a great idea. But it’s not black and white as it looks like.
I’m running Synology DS207+ home. I know this one is old, but it still works fine. And it does almost all I need. From time to time I change hard drives because the old one are basically done. Luckily the RAID 1 saves me a lot of trouble.
With today’s release of .NET provider for Firebird the Entity Framework (version 6) support got even better. But given we’re 3rd party provider, there’s always some steps involved. I created a sample project that shows both approaches to working with Entity Framework - Code First manually and EDMX using wizard (or course you can mix these two together too).
I’m pleased to announce new version - version 188.8.131.52 - of ADO.NET provider for Firebird. This version provides improved support for Entity Framework 6 and also countless hours and builds has been spent on hunting some race conditions in “events” support.
Back in 2005 I wrote a blogpost TcpListener and TcpClient (an easy-to-use example). It was really just a piece of code I wrote to quickly finish what I was doing and I put it on my blog. The code was throwaway code, but even after the years it’s still visited a lot on my blog.
Given the code was written 9 years ago, when my skills were 9 years younger and when the world around us was slightly different, different tools etc. I decided to give it a little facelift. Kind of 2014 edition.
Whenever I’m dealing with
DbUpdateConcurrencyException I don’t what is “client wins” and “store wins” look like. I can at the end figure it out because I know how the
ChangeTracker works and I kind of know where I’m heading. But going slowly though IntelliSense isn’t what I like to do.
Last week I noticed new firmware for Garmin fēnix 2 being available. I was eager to load it into watch because I was having problems lately with satellite reception. I was not happy to open Garmin Express to update the firmware. The watch works as a standard USB Mass Storage so why the vendor forces me to use this program is a mystery.
Anyway as I started the Garmin Express it started updating itself and kept popping up the UAC prompts. After like twenty confirmations it finally started, but said there’s no Garmin device connected. Heck it was, I just copied the
fit files from it, it was charging and I saw the “Garmin drive”. Couple of attempts later I gave up. Time to look how the update it done - I had strong feeling that it’s just copying the file somewhere and that’s it.
Last week participant on my Entity Framework course created a code that looked like it should not work, but it worked. And I had initially trouble explaining why. After I dug deep, almost running out of bullets :-), I finally saw it clearly. It made complete sense as computers follow steps exactly. Let’s have a look.
I was showing today on my Entity Framework course some tips and one of them was how to delete entity when you only have a key without fetching it first. Kind of small optimization. And then my brain started to think whether I can do it completely dynamically – just having the type of entity and values of key properties.
I “knew” I can do it. It was just a question of how deep I’ll have to dig. Surprisingly it’s not that bad.
Pro velký úspěch v Brně si zopakujeme Asynchronní a paralelní programování v .NETu pro Prahu. :)
Asynchronní proramování nabralo za posledních pár let na obrátkách a dostalo se do povědomí mnoha vývojářů. Ačkoli ve své podstatě se nejedná o nic nového, alespoň v systému Windows. Nicméně příchod C# 5 a, jistě nyní známých, klíčových slov
awaitumožnil použití asynchronní programování bez dřiny.
Pokud vás zajímají detaily od křemíku až po kód, přijďte 3.7.2014 od 17:30 na WUG do Prahy.
I don’t like doing things twice or more times. And creating builds with
csproj for multiple frameworks (like .NET 2.0, .NET 3.5, .NET 4.0, .NET 4.5) isn’t easy. Bunch of projects I’m following has like
Project_45.csproj and so on. That means you have to maintain two project files when you add, move or remove files.
Because I don’t like managing multiple project files, when I first started building FirebirdClient for multiple frameworks I simply switched target framework in Visual Studio, switched configuration and did the build. Not exactly a best scenario and actually few times I forgot to do the switch and produced wrong build. I had to double check what I was publishing.
I like my files organized. Heck. I like everything organized. In order. And as I take some pictures, today mostly with my phone, I upload these files into specific folder. But the files has whatever name the photo or uploading application decides. Not good for my obsession with order. Because these files are simply some snaps of world around me, I name these based on date and time. Pretty simple.
Firebird (2.5.2+) has finally support for creating backups and streaming these back to client via API (Services API). This release focuses mostly on implementing this feature.
Last week was some weird week. A lot of downtimes in services I’m using and I was also struggling to implement a feature, that looked fairly straightforward, in FirebirdClient. But the downtimes and more specifically the time just after the downtime made me think.
One of the services was down for nearly a day (really a day, like 24 hours). It happens. It’s bad, very bad. But it happens. The company was doing fairly good job keeping people updated on the status, mainly on social media. It could be better, but also worse (complete silence). There’s tons of articles how you should handle these bad situations. And I’m not going to provide any smart-thoughts here to this topic. What is also, in my opinion, is not only the disaster recovery plan, but also steps you do after.
Somewhere this week I read or maybe heard that you can implement all LINQ methods only by
SelectMany. Somebody just mentioned along the way.
I read a lot of articles about monads and
bind method and … But here I’m not interested in some “mathematical proof”. I just want to try it write myself. No helpers around. Pure C#. Just a brain training. Nothing else.
After my presentation this week on WUG I got an interesting question. How to wrap event-based asynchronous pattern (EAP) into task-based asynchronous pattern (TAP). Obviously my mind immediately picked up the
TaskCompletetionSource<T> class as a viable solution.