For the next few weeks, I will lead a process of studying the new(some of them become old) products and technologies of Microsoft.
I am impatience to feel the new stuff, I should admit that I have a little disappointment while on some of the stuff we should do the research earlier, but hey what can I say, it is better late than never.
So what we gonna explore: We will start with the basic of oracle 10g and the new version of ODP.NET, of course that we will finally start using VS2005 & C#, ASP.NET (2.0), we will have a deep dive into the Team Foundation Server (TFS), maybe creating some new work-items, we will create some workshops on TDD, more workshops about UI in ASP.NET2.0 using themes skins Master Pages etc. We will write some new rules for the FxCop. I will also do my best to focus on the WCF VS. COM+, so we could get rid of this nightmare. I hope that we might have time to do some other workshops with C#3.0 and WPF. We will also test and learn the GIS-Server 9.2, We are the first to do this in Israel, and even in the whole world you can count the users on one hand. There are also some other small issues that we will handle in our process, and I let you know the important details we learn and develop.
I would like to mention my team-mates that will help our team to find the best stuff, and bring it to you: Avi Vorzel - my team leader, Nati Dobkin, Doron Yackobi, Matan Cohen, Yossi Shmueli and Meidan Alon.
I wish luck for all of us and I am sure we gonna have a lot of fun.
If there is more stuff you think I forgot please let me know.
For the last period I actually wrote some new infrastructures and upgrade some other older infrastructures. Those infrastructures live in separate solution, and we are using it from our different projects, this infrastructure-solution output (DLLs) are also in use by other programmers from other teams.
In our project-solution we use file reference to those DLLs, using the copy local option, which should cause a copy of the DLLs to the bin directory in the project-solution. This kind of copy should occur every time we build the project and the DLL in the bin directory deferred from the DLL we referenced to (origin path of the DLL).
Most of the time I am working on at least 2 different solution (1 for infrastructures and 1 for my project) and I found out that sometimes after compile my infrastructure-solution and then compile the project-solution the Copy-Local = true does not really copy the file. The result is that you are thinking that you are working on version x.y.z.12 but you are actually working on version x.y.z.11. Believe me it could be very frustrating.
Steps to cause the copy-local to work: 1) Delete the DLLs from the bin directory (project-solution). 2) Build the (project-solution).
I've searched some further details an found this Jelle Druyts's post talking about the same behavior and found the same solution (=none).
Finally, I have my own mediocre solution, while working in solution with file reference that are enable that copy local, add the solution pre-build script for deleting all the files from the bin directory. Any other answer (at least those I've heard) to this problem would be build-time-consumers.
Last week my good friend (and also team-mate :) Doron (aka Control-Master), found strange behavior at the DataGrid Component (.Net 1.1). While playing DataGrid he suddenly see that after postbacks the Grid data disappears (looks like we don't use view state while we actually do). The first thing was the view state of course which looks fine, after a deep dive into his code he found out that he has some code that happens before the Load method which access the DataGrid Items property, causes the DataGrid to lose its Data.
I take this code step ahead while checking this functionality with the .Net 2.0 GridView, which does not have Items property, instead it uses the Rows property. This little difference made me believe that our feature won't reconstruct but I was wrong, this happens again in .Net 2.0.
So, I took deep dive into the .Net components using reflector but couldn't find something useful to tell.
I will keep reading about this, what do you think? is it a bug?
Yesterday I complete my weekly-blogs-time reading, I saw Oren's post: So when is it a good time to develop infrastructures ?! and I wanted to pay a special post for that kind of question.
First, if you didn't read his post, it is about time, I think that everyone who likes coding ask himself this question, and some other questions such: Why should I code at home, When should I see my wife and kids (for those of you who married), or What should I do to get home earlier. of course that we all enjoy our work and most of us could code till they sleep, and even then they still thinking about better architectures, algorithms etc.
There are many good answers to that issue (read the comment), but I would like to give here my way of thinking and hopefully hear your comments, of course that there some of you who would say that they couldn't afford it but as I will explain later it is like gold mining, where the gold is promised.
IMHO, if you and your company could afford it you should start thinking about a new (small) team for infrastructure/API. such team should get requirements from all other projects/teams and "help" the others to see their project from high-level, outer-perspective, neutral-domain.
I know that such team may look unprofitable but when you build such team you can gain many advantages: 1) This team will test new frameworks & tools. 2) Your DBA-s will be in that team, for better DB-infrastructures. 3) Your best designers/architects (for those infrastructure will be there). 4) Your other teams would reduce their time-schedule. 5) You won't have to implement your ideas all by yourself. those Ideas/API/Infrastructures will get better maintenance.
GAT&DSL Notes: Microsoft new tools (GAT&DSL) are kind of tools that shouting architecture, I see those tools as efficient ways to guide projects faster to the main issue, but a mediocre team would not pay much attention for such tools because they "time-consumers", in other teams (perfection seekers) this kind of tools most likely learn at home (spare time).
I also know that such "unprofitable" idea would be harder to convince the managers, especially when you are doing perfect job right now, everyone will say: "hey, but everything works why to pay for more persons?". But like every other idea you should create solid demands, and explain your reasons (you can call this the "Why" excuse) and I am quite sure that they will understand it.
Oren: If you want we can sit, talk and improve the demands for such team.
Readers: What do you think? What other requirements\fields of interest should be in such team? How would they integrate between projects?
Last month a good friend of mine (Frumi) asked me for help in one of his courses - .Net Project. I explained him everything I could (and thought that would be needed for first project): about how to write a better code, working with delegates, implementing OOP methodology, re-factoring your code etc. When I started to get into the project main idea I asked for a short brief about project requirements.
So, Frumi thought that it would be easier to show me a working example, as he said: "that's how he wanted our project to look like.". I thought, why won't we use here the Reflector? not to copy the project! just to help my friend (and his other friends) to understand this one. So, I show them the Reflector and they like this tool, they even stop asking me questions about .Net.
after a week or two, my friend came to me and ask for help, because he won't be able to submit this work at time and he and his friends tried to copy the code and compile, but it didn't work out.
So, I Google up this one: File Disassembler by Denis Bauer. This is a great Add-in for all of you lazy students, Disassemble everything (files, dlls, methods etc.) into a file.
Installation guide: All you have to do is to download and connect between the DLL and the Reflector (in the reflector menu: View -> Add-ins).
My private opinion: Don't use it for such things, not because it is inappropriate and not fair against the other students, IMHO, you will never be a good programmer if you don't have the passion to write everything on your own, that is the only way to learn new stuff.
After almost 6 hours of downloads, 3 hours of installations, my laptop which is only 1700Mhz (Sonoma), 512MB RAM, holds the latest version of the WinFX beta2.
So here are some tips for you guys:
Many people ask me about the differences between Team System and Visual Studio, and what is Team Suite. When I start my explanation and including informative data such as the Team foundation I can see their eyes roll inside their holes, and their face start changing colors. Here I'll give short introduction to this subject.
First, I'll start with the Team System - there is no such product, stop using this name, I like to call this a framework or package. You can see in their product information center: there is no susch product!
The 3-Team Editions:
- Team Edition for Software Developers- includes code analysis, performance tools, code coverage, unit testing, Microsoft says that it also include the Visio and UML modeling, I didn't find such thing yet.
- Team Edition for Software Architects - includes Application designer, Modeling tools, full synchronization between code and design elements, this edition not include neither code profiler/analyzer nor unit testing, web testing.
- Team Edition for Software Testers - includes tools for testing and manage the result, you can connect between the test, failure and the code that reproduce this, this edition not include application designer, but the strange one is that this one not include the code profiler and code analyzer.
The all three includes of course the Visual Studio (Professional) with all the programming languages inside.
After we explain the core editions of Visual Studio 2005, lets mix it all together to one package called Visual Studio 2005 Team Suite.
Pay attention to the colors, this colors indicate the original colors from Microsoft products.
There is still one product we didn't talk about, the Team Foundation Server (TFS), this one includes management tools, full integration with the client products (all roles of Team Suite). TFS is a server side product which combine together all the relevant data of your projects, such as bugs, code, testings, performance data.
Remember the Team system? now I can explain to you why I call this one framework, when you are working in a company and you have both programmer testers and you want full integration you will probably need the Team Suite and the Team Foundation Server this two products called Visual Studio Team System, but still you will buy them separately.
I had a strange problem trying to use the SQL Server 2005 Express, (this is the built in DB that come with the VS2005 installation).
The Problem & MS solution: I need to install on my laptop a local DB, but I don't want to install the full version of SQL Server 2005. Microsoft gave us a great tool which you already installed in your VS2005 installation the: SQL Server 2005 Express.
There are still things to fix: There is only one problem with this cool tool, you cannot connect to this DB, create new one or even do something useful with this tool.
So you are trying the first idea on your mind, in VS server explorer -> add new DB, choosing you compute name as the Server Name(in combo box, it is already there so it must work, isn't it?).
 Only one server-name for you man!
Giving meaningful, descriptive name to your DB (e.g. DB1).
New DB name is now available
But you can't, it won't recognize the SQL Server 2005 Express.
My Solution: In the Server name you will have to write: .\SQLExpress. Everything else that I've tried failed, such as: MyCompuerName, SQLExpress, local.
Try it yourself.
Last Wednesday I had the pleasure to be in the C#/C++ user group at Microsoft.
Oren Ellenbogen, for the first time as a presenter, gave us some tips/samples, new tools and a great show about generics&delegates.
Why the lecture was so good? 1. The simplicity of the PPT: It has the exact amount of data for keep yourself concentrate at the main issue: the samples. Some great pictures to wake the sleepy programmers.
2. Oren did a great job with the examples: Three different ideas that consistently repeated in different ways, help you concentrate and see the cost vs. benefit of the main pattern.
3. Live refactoring for proving your benefits and giving a short summarize about what we've learned.
4. As a dessert, two awesome libraries extending the concept of generics&delegates.
There are still some things to be fixed (or, Tips for your next lecture): 1) People like to ask questions, sometimes because they don't listen, sometimes because they want to prove that they are wiser than the pope and sometimes because they curious and hungry for new information. As a lecturer you should know when to answer and when to cut it off, of course do it, always, with your charmy smile.
2) When he showed his first samples (which was on purpose long&clumsy) the crowd start staring and asking questions. When you are showing a process (walking step by step) of something you should say it, because people can't read your mind and they start thinking: oh, this code is even worse and they continue with: why do I came to this lecture, where is my wife right now and why the code I wrote today didn't compile.
Oren: I am waiting to hear you next time, it was really great, informative and productive. To all my readers: pay attention to this guy because he has extremely precious ideas, and he knows a lot of tricks that you can't even dream about them.
Oren already put the presentation & code samples in his weblog, take a look... He also promised to put the movie, so you could enjoy it too.
Updated: Here are two other posts talking about the lecture: Roy Osherove & Ken Egozi BTW, I saw that Roy put link to my blog in his Israeli .Net bloggers section, it is a great honor to be on this list. Thanks.
|