I always wanted cool people to Tag me (Thank you Oren for giving me the opportunity to share my thoughts, I like such challenges). I think we should, also, do this with new technology and code, For example: I am writing an advanced example for VS-add-in for check-spelling so I will Tag one more person to write code and blog about it, for example, Tag: Israel Israeli (VS-add-in for converting JavaScript to Script#). I am 25(6) years old and I saw some cool technologies and heard some great ideas for new start-ups. I can easily reveal young people only by looking their eyes and see them shinning with passion and easily understand that their mind can't stop thinking. I like those who always show you new things not only talking about cool features but also coding them. More than I like to hear\read about cool technologies\features I like to code them alone\pair etc. I think that the key to success is not what you know, it's what you want to know, for all those who want to be good look at Tal Ben Haim at wiki, Yossi Benayoun or for our American fellows Michael Jordan, This people become stars from both hard work and the passion for winning and success. Always find new challenges (write them in a place that you can see it every month\week\day). Their is one thing I like except from coding, teaching others (especially friends & team mates). I like to take a newbie, mediocre programmer and learn him how to be better, I measure my success by reading his code after some time. This is a great feeling knowing that someone you teach become a master. At every step in my life I had between 2-5 people which we work together: reading stuff together, coding or just help them understand advanced features\patterns. Giving them new challenges help me to learn them better for myself. Read&Code methodology, I am trying to read a lot, books while on bus\train, blogs\magazine while tired at home and code the rest of the day. I've always have a small project which I code for fun, it could be an add-in, it could be a new research and it could be something I've learned at the university in some theoretical lessons of another boring course. few must do issues: - 3-4 books a year (tech books not harry-potter's one), management is good enough.
- about ~100 bloggers a week. (I can't read everything but I truly make efforts to read most of them. Anyway, I have my favorite and the others I am reading if they have an interesting posts)
- articles - one main-subject per week\two. (for example: the last 3 weeks were dedicated to Entlib, the two weeks before were dedicated to AGX). I choose a small subject in a bigger one and learn it, for example: Entlib - PolicyInjection, Logging, Exception Management. AGX - API, newer versions, patterns&practices for better AGX-architecture.
- Blogging - It will cause you to do cool stuff so other people could enjoy and won't be bored to death while reading.
Things I should do Learn to manage my day and my programmers day\week, I think that I can do things faster\better\cleaner, moreover, I know that I have to be a better team-leader especially while managing other tasks and planning the project-future. I think I should write a better designs or even transform my self to start writing story cards. I am feeling that my (and my team-mate) design and design reviews hold a lot of crap. most of the time it is far away from the code itself. Be more patient - "Serenity now" they called it at Seinfeld, I hate people who shout and raise their voice, and when I am doing it I hate it the most. This is a world of ego and that is a fact! we should love each other, cause love will bring us better code. (for sure) Code more at work - I am feeling that I am 60% manager and only 40% coder, which cause me to walk the corridors depressed. don't get me wrong I am coding a lot at home, but I always feel like the management and gantt-scheduling won't help me become better. More pair with people who better than me - I would like to work with more gifted developers and have a lot of pair-programming sessions with them. Things I want to do I will concentrate at the things till the end of the year cause more than that will take a few more posts. TDD - is the main issue, I start learning and coding it and I think that this is a fascinating world, moreover, I am feeling that there are not enough people implementing it so it make it even more challenged. C#3.0 - especially Linq, which I think that this is the biggest step Microsoft made at this version. GIS Stuff - Write and code more on new GIS technologies, like MS-Virtual earth and Google Earth or the new Image-Server of ESRI. The GIS stuff is at the beginning and people don't know how to use it at work, I think that there we could find a lot of challenges and a lot of money. Left the current job and Join to a challenging start up I am not sure what I want more the money or the challenge but they both would make me happier. (not till the end of the year) Things I won't do As Oren says, I won't left the keyboard, at least not for the near future. Won't manage team that don't need me in a player-manager position (like: Ruud-Gullit or Kenny Dalglish). I can't be only a manager, not right now. I will never give someone else (beginner\mediocre) the right(full) answer. (this worst-practice) in our fast-and-furious world we need everything fast so we don't care that others won't learn, you don't know, I'll show you the way... Tagging this folks Avi Wortzel, Roy Osherove, Yossi Shmueli, Oren Eini (aka Ayende Rahien), Shimon Krokhmal.
This Survey sums up everything.
- ESRI == Microsoft, which is a big success and I am pretty sure that this is a good direction.
- Blogs ain't the main issue at the ESRI products,
I think that ESRI are still thinking in a GIS manner so there are more blogs for GIS users, than blogs for GIS developers. I think that blogs\forums\web casts\GIS casts are better way to sell you API and of course better way to help you fix it.
Enjoy.
I think that ESRI made a huge jump in the last 3 years from the ArcIms Server (and the weird AXLs files) toward using almost the same API above the MXD files and Arc-Objects architecture. Don't get me wrong they still have a lot to do, but hey they are doing it in the right direction.
I wanna show something that never happened before: Next version (9.3) in brief Microsoft API & ESRI GIS More on the next version and here is the real article about the next releases.
Some Highlight for the 9.3:
- Windows vista capabilities
- Working with Microsoft about adding virtual earth controls to the API.
- When? a the first quarter of 2008! (good to know)
Something still missing:
- Readability and Usability testing the Arc-Objects API.
- WPF support, I've read about OpenGL API... in the next releases.
ESRI letting us know about the next releases, they still don't let us know everything but it is a something we should use. Moreover, they even made a good direction while working with Microsoft.
Last friday I made a presentation about non-metric methods, non-metric methods is a small subject in another bigger subject named: pattern recognition.
you can download the presentation here (zip file, 566KB).
I've found this three articles: Someone I don't know but I think that he starts with this Scott Hansleman Ken Egozi So I couldn't resist the challenge.
Things I Learned about Software in College
1) Math. 2) Your code should only give the results the lecturer want, this ain't need pattern or not even need to run tomorrow morning. 3) Assembler\Unix\Perl\shell\bash and more other things in computer science that you will never use, but good to know they are there, like the sun, moon and ...
Three things I learned about software while not in College:
1) This is a world of Ego - try to be calm and listen to your friends you don't know everything, in such way you will earn more friends and learn more from people. moreover not every person who make noises of genius (or maybe make noises he knows something) he truly knows it {after all we all need to say something that every one else would know that we out there}. so first, listen to him\them. Afterwards, try to dig more to found out if you can use this details. 2) Only time (and experience) make you better, so don't stop reading, coding and talking about architecture. 3) The coder who is sitting near you is your friend love him & hug him after all you see him more than you see your wife\girl(boy)friend\son.
Keep learning
I've finally found some time to explore the nmf format and the AGX capabilities a little bit more than I used to read at the ESRI site. In my office we made the first installation on production of the AGX in Israel and I'm pretty sure we are the first in the world. One of the problems with being first - is the lack of knowledge and documentation, moreover this product (AGX 350) has many bugs. despite all those cons I am very happy with this decision, as I wrote in my last post. Today I will light your eyes with two properties I found, Visible & HideFromContents Visible - is pretty straight forward, true - will show the layer on screen, the false - will hide it from your screen. HideFromContents - is also straight forward but I didn't know it exist till today, this will decide whether your layer will be in the Table of Contents (TOC) or not. I played a little bit for you - I hope those screen shots will help you to remember this post. {Visible=true,HideFromContents=false} the layer(Bountiful_images) can be seen and can be managed by the TOC on the left. {Visible=true,HideFromContents=true} the layer(Bountiful_images) can be seen but can't be managed by the TOC on the left (magic-layer). {Visible=false,HideFromContents=true} there is a different layer on the screen than the layers above moreover you can't manage it using the TOC. Pay attention that in the last (Visible = false, HideFromContent=true) you cannot see the layer at all, but you can find it in tools -> manage layers . The problem is that you will never see this layer :). bug or feature, you decision. Business logic as a bonus: One of the customers came to me and told me they want to see a specific layer but stop users from managing (showing\hide) it. To me it sounds stupid, but hey this is the customer decision, and it won't cost me a thing.
Last week we launch our new products, after three months of intensive develop, we finished and gave our evaluation version to our customers. Our product based on the ArcGis Server 9.2 of ESRI, based on dotnet Framework and using WCF Capabilities for performing intranet Service Oriented Architecture. I should admit that this buzz-words works, I am not sure why and I can't tell how simple is to implement it, but every manager\team-leader\programmer that heard it has a stupid smile on his face, "Hhaaaaaaa so we can use it too?" yep, this was our intention, write it once, use it everywhere. One more thing on my mind, our complicated server architecture include lots of business-geographic logic, but it worth nothing, cause managers cannot estimate the time you spent on writing your inner algorithm. Here are some example: - We published a coordinate transformer service for everyone usage
- We implement a logic for retrieving\querying maps from our server (imagine a clothing-catalog now transform your thoughts to maps-catalog)
- We can also export Rasters from our DB to every customer
- And we have more other server side stuff that we spent a lot of time on it, but the real people to worth it will probably be the other programmers\team-leaders on the near by office.
Lets take a typical manager\customer, try to explain him all this stuff, It will sound like this: Me: We implement a great server side logic, every one in our company could use this it will save the other teams days/months/years. Customer(thinking): he spending my time and money on other teams\projects?! Customer(saying): what can I see from it right now? Manager(saying): Yes, show him something, give him to play with this new baby. Me: Hmm, no. see, now you can't do a thing but in the near future ... Customer(hearing): bla bla bla... [feeling angry] Manager(thinking): How do I hired this stupid This reactions can vary from one to another, but at the end point, customer can only understand things we sees. Don't try to sell them server side capabilities, and it is a cool feature that everyone can use it, but you should know what every one need and want to get and you should give it to him. Here are my tips: - Programmers & Team-leaders - we always wanted to do a generic things, cool things and other stuff, so we could smile on our way home, (for example: code WPF on GIS Engines using the DLinq underneath all this while writing coast-to-coast unit test using our new mock object with those cool new TFS features for nightly build&running those tests) - do not give up on those features, it will make you happy after all, but use them wisely.
- Customers - they have a business logic to catch, we should understand their needs and give them something to play with, not just Doom/Fifa like to play with , we should listen, ask interact and understand what will make them smile when this product will ship.
- Managers - wants their customers happy and they also want something to play with, something to show their managers and other partners\customers to bring more money, listen them too, try to understand what can help them bring more money.
- Probably if you will listen carefully you could find a good point at the middle when both the customers & managers would be happy, now start thinking what can help you perform those dreams come through,
How do we did this? I should admit that we do it unintentionally, but it works just great, We used the new AGX(350 build), it gives us a great UI almost for free, why I am saying unintentionally? because while sitting with the customers (long time ago) we talked about UI and Google-Earth-like, This tool is a beta but probably the worth beta in the world, why? because the customers want it, because it makes the customer-friends happy and when the smile we can blow his chest up and smile every time he plays with it. about the managers? they can do this too, their customers happy, the project in time, you also gave a great buzz-word the always like to say. For my team? you should ask them, but for me, I am happy because they are, we use the best technology in the world and keep doing cool things. so why not. This simple customer-driven technic (you can also call it Agile :) gave our team a lot of time\space to implement our server side code\architecture for further usage of other teams. One more tip (including example): For each module you write\design on the server try to give something cool that every one can see. (think about a customer-driven name for this module) Think about the SOA-team that is doing the hard work which no one can appreciate. Show the managers something, do it simple, with minimum time, just do it COOL, well-designed. try it to get to their business-logic. For example: If they need to travel around the world and you create a great logic of minimal distance (shortest path), implement it on a simple map, you would probably do this for your own experiments so just publish it so every one could see this. Enjoy, Relax, Freedom.
I finally found time to test the LiveWriter(Beta) and this is my first test to add a post to my blog, It looks pretty cool and easy for now.  Me Editing this post using my new LiveWriter(Beta) I'll probably have more thought later.
I've Added new capability to my blog, this called Snap Preview Anywhere. You probably see this before in some Web2.0 sites, but I was surprised how easy is to add it to yours.
I like this new feature of mine :).
Small snap preview of a small snap preview for DasBlonde blog
You should try this too.
P.S. 1 This cool feature of snapshots is enable only on the left panel, (links and blogrolls). I should check why this ain't work on the main page, I think that dasblog saves its links using *.ashx instead of pure href.
P.S. 2 I would like to hear your opinions about this feature and other recommendations for new features.
We are using the Team Foundation Server and we start using the Code-Analysis in our build process. Migrate Code-Analysis: this option migrate a predefined Code-Analysis rules, so the team-leader can create a template Code-Analysis rules (from now on will be called: Team Code-Analysis) each programmer should click the Migrate Code-Analysis on his solution, (the result on the local solution will be called: Programmer Code-Analysis).
From MSDN: "The ability to migrate allows you to stay synchronized with the settings on the server.".
My co-workers told me that even when we create an empty Team Code-Analysis they still get annoying warnings for Security Rules, Usage Rules and more rules that I didn't turned on. After playing on and off with our solutions I found out that the migration will save the most strict rules. for example: Team Code-Analysis: only Naming Rules Programmer Code-Analysis: Usage Rules At the end: the solution will have them both.
This all not so bad, the real problem starts when I changed the Team Code-Analysis templates: We start the project with full rules, but realize very quickly that we cannot have them all, so we turned off most of them, and today we have only the Naming Rules. But the solution itself: still holds the strict rules, so it will hold them all.
I am pretty sure that such behavior is by design, but I think that this one is not the best choice. why won't you ask me what I want to do with my migration...
One more tip: If you have issues like this, it is not a great fun to tell all you programmers\Co-Workers to turn off the unwanted rules (each solution * each project). The pragmatic approach: Those configuration will be saved locally under your BIN directory inside a file named: AssemblyName.dll.CodeAnalysisLog.xml, so all you should do is to make a sample solution and sent it to everyone, including a simple batch with xcopy to the right folders.
Enjoy.
|