Tuesday, December 30, 2008

Big Time Full Year Reflection


I can't even comment on how much I have learned in the past year. As far as how my project is going, it's going well... there are still a handful of things to be done. Partially because of scope creep and partially because "90% of the work is done with 10% to go" (I forget who said that to me, may have been a commenter let me know if it was you.)


I started this blog in April of this year, between this thing and Project 007 my knowledge and confidence in my ability have hextrupled (yeah, I made that up, ten points to the nerd that knows the real word for that). The best part, is, that I've met a whole bunch of people in the process.


If I were to start this project all over again what would I do different? Well, I mean, I wouldn't have gone halfway up a few paths. Like wasting time checking out MVC, LINQ, and other directions I decided not to go in... but that is a necessary for any project, I suppose. I maybe would have spent the first few weeks writing admin screens for people gathering data, but back then I didn't have the confidence in my data structure that I have now, so my fear was that it would change over time. It is a pain doing this data import now, even though it was made MUCH easier by the locating of a SW tool to import images from FMP to SQL. I would have started the consultant earlier, and asked more questions about layers to people that knew more than I do. I would have been cleaner in the structuring of my folders. I would have been more realistic on my time estimates, but that is something I'm getting much better at, so I'm proud of my growth.


What did I do right? Well, I think that the best thing I did was keep up the iterative process in the form of sprints. I think that my data structure was strong, and though the consultant disagrees, NHibernate is awesome. I like how most of my content is database driven, and I took the extra time to set things up that way. I like that I took a stand on some things that I thought were important. All in all, I like that I took a big risk, and I really thing things are coming to a great fruition. 


Later this week I'm going to post everything I have to go and how I am breaking it down. Hopefully some people can give me some wisdom when they were in just this situation. 



Good night and happy new year!!!




(PS like the new GD tee? I can thank Lloyd Humpereys for the design. They are available at all the high end Girl Developer stores near you. )  



Tuesday, December 23, 2008

Merry Christmas (or whatever) from Sara and Steven


                                                                                     


So, this will be my only post this week (vacation and all). I, however, wanted to make sure to get out my Christmas card to the intarnette (I have gotten 235902 cards with my friend's beautiful families, so instead of sending one out of me and my cat I figured I should post it instead.) As you can tell, Steven is much cooler than me, and felt the need to pretend to sleep because I was embarressing him with my incessant picture taking. 


I hope everyone has a good and gadgety holiday. I think this is a great time to enjoy the company of the people in our lives, whether it be family, friends, or just strangers on the street. I'm not a big fan of the Christmas Season myself, I find people to be stressed and hurried. However, it is a great time to get some gas in your karma tank to distribute all year.


Stay tuned for adventures in automated builds and unit testing.


Oh, and GET OFF THAT KEYBOARD FOR ONCE IN YOUR LIFE, GEEZ.



Friday, December 19, 2008

Christmas Party and Nerd-nitiation

Last night was our company Christmas party... it was a lot of fun. I love the crew I work with.


The point is our "IT" team (pseudo) is now outfitted with the finest in Nerf defensive gear. Lazer sights and everything. For secret santa I got an autographed Joe Smith as #35 baseball! How awesome is that? Will post more over the weekend. For now I'm in recovery. Pictures are below. Apparently no one on the corner got swagga like us.









Tuesday, December 16, 2008

I've Concluded That You Guys Don't Think I'm an Idiot - A Reflection on the Sexes and the Field

My biggest fear used to be asking questions at user groups. I would get all shaky and nervous, I would have a question and go over it in my mind 20 times. "Is this a dumb question? Will people start throwing batteries at me chanting 'stupid girl?"'" I would go home and ask someone if it was a dumb question, or figure out myself that it was a decent question (there were some dumb ones, I'm not going to lie), and be mad at myself for not asking it. When I finally got the guts to ask a question it was easier then I ever could have imagined, and no one yelled! No one looked at me in disgust, and people were super friendly. I was shocked when guys started writing ME with questions about issues they have run into, or questions about development. 


I've actually really enjoyed being a part of this community. I mean, it stinks that there are so few women in it. There have been times that I have been going through something I felt like only a woman could understand, and have wanted a buddy to talk to. However, everyone has been really warm and friendly. I might even say that being female might be an advantage (sorry guys) because it's so different. 


I feel like the men I have met are really kindred spirits. Why? Because we share common interests, mainly, a love of Software Development and the improvement of our craft. We enjoy debating frameworks, and methodologies, and the advantages of different programming languages.  One thing I have maintained through all of this is my femininity. I, in fact, have unapologetically embraced it. Many would consider this unwise, the male : female ratio in Computer Sciences is about 8:1, even less women persue a career in software development.  Only 10% of this year's Com Sci grads in the US were female. I will admit that while sometimes it is easier being female hardly anyone looks at me with my fake blond hair and shiny lip gloss for the first time and says "wow, that girl looks like she's an amazing developer." A girl does have to work hard to garner respect from her peers in this situation, yes. However, don't think that being a woman who is outstanding in this field and being feminine is mutually exclusive. I believe that many women in the sciences believe that the need to “tone it down” a little in order for men to consider them an equal. I think that kind of thinking is the highest form of sexism, and we're doing it to ourselves.


 


When we turn our backs on traditionally female behavior we tell, not only men but younger women that being a woman does not equal intelligent. We tell them if you love fashion, or homemaking, or sewing, or spending time with girlfriends you can't be respected as someone with a valuable opinion. That you must turn your back on those things you enjoy, don your Birkenstocks and throw your hair up and get in there and show them who's boss. This does nothing but diminish the awesomeness of being a woman and being good at what you do. This sends a clear message "In order to be as respected as a man, you must be androgenous, or look like a man. Otherwise when they see you they wont respect you."


 


Of course, the young ladies in Hollywood who accomplish nothing with their lives but be skinny and try not to pass out in a public place do nothing to help us kill this stereotype. Giving pause and press to people like this hurts all women, because it says if you are someone that makes feminine appeal a priority you automatically give up your self-respect. You will never catch me reading celebrity magazines, or giving a crap about who is dating who. I think the women who capitalize on "I'm a pretty girl, so you should like me" are a shame to the gender. They are holding all of us back. Why can't we idolize women that have attained both ideals of being intelligent and appealing like Marissa Meyer of Google, or Amy Brinkly of Bank of America.


 


We need to teach this younger generation that the marriage of being a woman and being smart is a beautiful thing. We need to encourage them in all their persuits, whether traditionally “male” or “female.” We need to make sure they know that even if all the other people that do what they enjoy don't look like them, that's ok. That it's up to them to change the industry, and instead of conforming in order to “fit in.” They need to try that much harder to be the best they can, so that they can be an example and shining star to the women out there who are afraid to make that step. Because, possibly, if we start doing that this “glass wall” we've created for ourselves by turning our backs on our gender can finally be broken. I'd love to see more women in Software, I think we should start by first telling them "Hey, if you like computers, or math, or science it only adds to your beauty as a woman." Because everyone likes a pretty girl when she's silent, but pretty and smart? That's just beautiful. 


 


 


 


 


 



Thursday, December 11, 2008

Mommy always told me I was witty



Actually, she never told me that, I just figured it would be better than "I'm witty."


New Arti-shizzle


Feel free to comment here.



Saturday, December 6, 2008

I am Feature Complete

And 90% code complete. **dance dance dance***



I will be sending out links for testing soon, we are getting our flash nav done.



I have taken this week off for two reasons:


1. My generous boss gave it to me


2. To do a hard reset (of me)


I never travel and I need to. I kind of hibernated, I do that sometimes. We all deal with stress differently I suppose. I even slept through the Central PA code camp today which was a real bummer because a good friend was speaking and I missed it. Sometimes you just need that refresh? It will feel good to get back to work.


There is an NYC code camp in Jan! One of the Scotts is talking too. I'm sure it will be fun. If anyone is going it would be cool to get a group together.



Wednesday, December 3, 2008

Don't Be Afraid of People Better Than You




 




 




 


At a previous job I had been placed in charge of finding some new engineers for our development team. When asked for his advice on how to filter candidates my boss's boss said “Try to find people that are better than you guys.” My initial reaction was “Wow, forget you, because that would be impossible because those people don't freakin exist, thank you very much.” However, after giving it some thought, and knowing his confidence in the team it was the best suggestion I could have gotten.




 


It takes some real guts to hire someone you would consider a superior. The natural place you go in your mind is “I've worked hard to get where I am, I'm not going to have some wunderkind come in here and take all the glory.” However, once you get over that initial apprehension there are many reasons it would behoove you to go against that instinct and humble yourself for a hot second.




 


When you end up working with this person (because you've set your pride aside and hired them) you have the opportunity to become more valuable than you ever could on your own .I mean, first of all, not only will your team start producing a better product, but this will reflect on you in a positive way as a good decision maker and manager. I mean, you know you're awesome, but putting together a team of amazing individuals like yourself makes you a rockstar.




 


Secondly, there is no bigger motivator than being afraid the new kid's star will shine brighter than yours. Who can't use a good kick-in-the-pants? We all get in ruts, or stop being at our best because we take things for granted.




 


Also, explore WHY they are better than you. What about them strikes you as a talent you haven't YET attained? How did they get there? What are their habits? You're not trying to BE them you are trying to assimilate their ability to your own. Maybe it's a lack of self confidence that makes you THINK they are better than you. You will learn this as you work with them.




 


Lastly, it never sucks to learn new things. Things about yourself especially. We, as software developers, can have egos as big as all out of doors. A little humbling ever so often can't hurt. Just keep that in mind when hiring and don't hire someone who THINKS they are better than you. Because in this industry that's much easier than finding someone that actually is.


 



Thursday, November 27, 2008

Happy Turkey Day

I'm stuffed. Happy Thanksgiving.


I am not working today! In fact, I get to sleep in for a week. I will be working (from home), but it will be good. I've been keeping "developer hours" lately. I know you know what I'm talking about. It's turned me into a cranky, snippy, sleepy girl developer.


I will be working, obv, during this time off. However, I also want to focus on this site and doing some articles. Things have tapered lately because I haven't really had the time to write as much as I'd like.


I am NOT complaining, no matter how much it sounds like I am. I'm super excited about the launch and everything that goes along with it. Next Monday my boss and I review his new web site. That's prettty exciting. I can't begin to tell you all how much I've learned, it's dizzying.


Anyway, hope you all get to sleep in tomorrow too.



DISCLAIMER: There is no funny in this post. My bad.



Sunday, November 23, 2008

Rating my iPhone Applications (straight up Ebert style)


According to Josh who commented a few posts ago, "developers don't need iPhones, only sheep do." That being said a lot of us have them, the 3G one and the OG (Original Gangster). First of all, quit acting like you are cooler than me because you have the 3G, I am yet to see a compelling reason to switch (except that I may get less attitude from sales people who told me the only skins they have are for the 3G like I was carrying around a VCR). I figured I could rate the apps I have used and maybe you could share some of your own? If you don't have an iPhone make sure to tell us why your phone is cooler, I can be convinced. Here goes:

 



Ok, so I downloaded a twitter client because I didn't really want to get twitter texts. To be honest with you I'm not a huge fan of Twitterific. I swear it kills my battery (a conclusion I came to after gathering much circumstantial evidence). I really fare better by going to twitter on the browser on my phone. The mobile UI that is provided by twitter is much cleaner, and straight forward. I give it 2 out of 5 tweets.


 




 Taptastic is the perfect game to play when you are somewhere and you are uncomfortable and you want to pretend you are doing something important. It's a game that flashes little boxes on the screen and you have to tap them. Get it? Taptastic! I have never gotten past the third level, nor have I wanted to. Altogether a good purposeless app, 7 out of 10 carpel tunnels.




 




 So it could be that my hand eye coordination stinks because, unlike you guys, I haven't been playing first person shooters my whole life. It could be that I have the attention span of a goldfish and I didn't play with it long enough. However, it also could be that  Tap Tap Revenge just stinks. It's supposed to be like guitar hero, but it's not. I get the strings at the right time and it doesn't register and the music isn't melodic enough to get into. I give this app 1 out of 10 pretend instruments.


 




 Spore is the only app I have paid for. It was 7.99 (actually, that's a lie I have paid for 2) and I think it was worth it. I got a real feel of the game (it is like a small portion of the real game – the beginning I gather). I'm currently stuck on level 27 I think, it's a level that you have to push one animal into another round animal to kill it but if you push the animal too much it dies. It's heck-a annoying. I do feel like I got my moneys worth and got at least an hour of entertainment. I give it 4 out of 5 over-hyped PC games.


 




 Ok, so I bought this Absolute Fitness app when I had a large motivation to get fit, it worked well. It's a food diary/calorie counter/weight tracker/workout buddy. The only thing is that it's time consuming, but I think I may start tracking again since it's holiday time. The price is a little steep $14.99, but you get a lot of bang for your buck. Some failings: the food list is incomplete, I would love it if it remembered things you input recently. I give it 3 out of 5 muffin tops.




 



Pandora seriously takes the cake as being the best application you can download on your phone IMO. It has come in handy so many times. At work we have one of those sound systems where you can just plug in your ipod and I put it in there sometimes. I listen to it at the gym when I want a change from my workout songs.... it's great to have assorted music you will like so handy. I give it 9 out of 10 awesomes.


 


These applications are all ones I think are good ideas but have never used:



iTalk looks good because I constantly get mislead by CS people trying to get me off the phone. Then I call back when something doesn't happen, like a refund, or a cancellation, and a different CS agent says there is no way I was told what I was told. This is never fun so I keep meaning to start recording these calls but I forget.


 


 


The Fake Calls thing is exactly as it appears, I haven't had to use my phone to get out of a sticky situation yet.


 



I have used Say Who once, it's a voice dialer, it's pretty good but in order to use it I have to do as much tapping as if I were dialing myself...so eeeeeeeh.


 


So, that's it! Later gators.



Tuesday, November 18, 2008

Seriously, Someone Start Working on Some Awesome Forums

RIGHT NOW.


Why are there no awesome javascript-y forums? I like the Channel9 ones, but they are buggy (sorry, usually I love M$ junk).


This is a huge market. Get on with your bad self, independent developer!


Honestly, there is never a reason for a full page load when navigating an individual forum. You will see on my site the need for new pages is slim. I may have gone overboard, lol. I overzealously avoid postbacks (though, JS nazis like BillRob may disagree)


I commented my code tonight (rare - in good practice as we all know I believe) and this is what it looked like:


 //only return classifieds that are active and <45 days old



//THIS IS WRITTEN LIKE GARBAGE



Thus illustrating yet again how comments are only needed when your code is pooly written and therefore wouldn't make sense to someone else quickly.



That's it, it's 1am and I still have a TEENY bit of work to do.


Reflect on this



Note: upon beating said horse until dead with pragmatic friend I do not agree with sentence one of principle 5. I also don't buy into the docterine of Buddhism, nor do I believe that these words generally reflect Buddhism, or that they don't for that matter.   






Thursday, November 13, 2008

Not Gonna Lie, I'm Pretty Psyched

So, tomorrow, I'm going to be talking to a group of girl scouts about being a developer!! It means a lot to me because one of the reasons I do all this is that I want to get girls excited about technology. It's so rare to see a girl on fire about it like a lot of guys are. They are in approx 4/5 grade so it took a lot of thinking to figure out what to talk about.


So, I put together a power point that I think is good. I posted a question on SO and people gave me great ideas. A super analogy using sandwhiches and a great programming tool for girls named Alice. I will post about how it goes. The theme is "Girl Power," and I def think it's super empowering to be the girl swimming upstream in an 90% male community.  


Project is going well, but as usual things are crazy. It's so great to see things completed!!!!! Looking on schedule right now, but you know how things can pop up.


I'm actually going to need some testers soon, I would love volunteers and a chance to show off the application.


CONGRATULATIONS TO ERIKA L FOR BEING THE 400th COMMENT!!! YOU WIN A FREE DRINK (she's one of my best friends, but I didn't tell her I promise!!!!)



Tuesday, November 11, 2008

up-diggity-date


My boss was a bit startled this morning when he walked in and saw me sleeping on the couch, lol. I tried to explain that it's a very "developer" thing to do, that there is a lot to be done in only a few weeks, but I think he may just think I'm a nut job. Whatever, I got on a real tear late last night. Got "in the zone" if you will. 


I have a very good friend who is turning into an amazing resource in this stressful and intense time. It's great having someone who I can ask questions to who has been here before. I love this, I love building my own application (it's my company's but you get the drift.) Tomorrow I start looking at production servers. I hear Rackspace is the bees knees, but a bit expensive. Anyone have any reccomendations?


I got a new "Girl Developer" logo. See below. It was made by a great kid named Lloyd Humphereys and you can see a link to his blog on the right. Check it out, he's really bright and resourceful. I may put him on retainer. 




Wanna see a girl that kicks some serious butt? Leahculver.com - check it. She built Pownce, which apparently everyone uses and I'm the last one to the party. I love the interface, and the idea, and the fact that a GIRL built it.


It's not that I feel un-included by the boys... I've come to the conclusion that everyone has really welcomed me into the community and I honestly think they aren't thinking "stupid girl" when I am around. It's been great, but, being in the minority of women in this field it's great seeing another girl kicking *** and taking names. Its really inspired me to keep on trucking when things get stressful.


Off to bed! (at home) Happy developing.



Oh, and PS, our president has a website. He wants to keep us informed. Nerds FTW!!!!



PPS cellphones.org named me one of the top 25 "Geek Blogs" .. how cool is that? Here is a link. 



Friday, November 7, 2008

My Friday Night


Dinner from Delicious Heights in Berkeley Heights... BEST TAKEOUT AROUND


BQ Chicken, asparagus, greenbeens



Bottle of Sav



Tivo



Pajamas



bbq sauce on my pants



Bought a new monitor, pretty sweet HP 22" for $250


This is my first photo journal... good idea? working tonight, a lot to get done in


few weeks.


Hooray science! BO is POTUS.  Interesting impacts all around,


but here's some trivia I found interesting. This is a great thing for 


science and technology. 



Anyway, back to work. Night!!! 



Wednesday, November 5, 2008

Three Great Reasons Why Even Lonely Developers Need Source Control

Sometimes, when you're a lone developer on a project you skip some of the important facets of developing as a group. Like iteration planning, bug tracking, and source control. Well, I'm here to tell you that having source control is the most important part of your application (that's not written by you, that is). Here are three great reasons why you should never develop without it, in desc order of importance.



    You sporadically do really stupid crap.


    Let me illustrate with a story. One time I was getting ready to go out with my girlfriends., this was a few years ago . I had just gotten out of the shower, so I was wearing a towel. I was simultaneously on the phone and putting the stuff I needed on the floor in front of my mirror, for instance my makeup, and a hairbrush, threw my curling iron on, and lay out my clothes. I chatted some more with my girlfriend and sat down to start prettying up. Well, I guess we all can see where this is going, I sat on the curling iron. It's a salon curling iron, so it gets up to 400 degrees. For the rest of my life I will be literally branded by this colossal momentary lapse in judgment. Now, if you asked me a year beforehand “Sara, do you think you should do something to take precaution for sitting on hot styling tools?” I would be like, “Why, that's the craziest thing I've ever heard.” Well, guess what, you've done something just as stupid (get off your high horse, you SO have) and though you're thinking “Why, I would never trip over a rabid squirrel and toss my laptop in the sewer” it just COULD happen. Then where would you be? Source control is important because you never know what can happen and you always want to have a backup.





 



    As programmers, sometimes our brain writes checks our fingers can't cash.


    “Why, I think I should which from Castle to LINQ this weekend.” “C# looks cool, let's switch from Java this week” “Wouldn't it be great if we created a new utility project and condensed all our object methods into one big class arraigned by related data by page this afternoon?”





 


My father is one of my four favorite men on the planet, however, one of his hobbies is starting projects around the house. His hobby often doesn't include finishing protects around the house. He's really done some beautiful work on their home, however, my mom has had to explain to guest swhy we had a half of a deck, no bathroom tile, and, when he decided to get aluminum siding, a black tar-paper house. I'm sure she would have loved it if my father had checked in early and often so she could just roll back his changes after a few months.



     


    Listen, sometimes doing something new can be fun, and great ideas occur to us all the time. When we get to implementing things we can make a bigger mess then we intended. When we ensure we can bring back “the last time things worked” before we started gutting things. Or, we could just decide we liked our earlier solution and revert back to it. Either way it's a good call.


     


    You obviously care about your development as a talented programmer. I mean, you're active online you pay attention to the blogs, you keep up your skills. Wont it be nice a year from now to look back and see just how far you've come? I mean, I know we tend to run into those things in our code ever so often, but usually we fix them as soon as we can. It's always great to reflect, and chuckle a bit at prior naiveté. The other day I was going through my stuff and looking at the LONGEST if statement since the beginning of time I think, and I realized, I didn't need any of it. That one line took care of the whole thing. Seeing my application like it is now will probably make me smile down the road.





 


There are a ton of other reasons to use source control as a lone developer, but those are the top three in my book. Though you may not take the time to set things up it's invaluable. It took me two days to set up svn for the first time (I also had to set it up on the mac's of the designers as well because I had hoped they would use it for cataloging designs, these hopes were quickly dashed). It was an investment, but worth it and in the end I learned a new skill. I could do it again now in much less time.




 


So, take care of it, because I don't want to hear you whine when you DO get attacked by that rabid squirrel, because it will be too late.



Sunday, October 26, 2008

Dev and Dev, maybe some more Dev...



Haven't been around for a few days, been kind of  in hibernation getting some things done. Got the first few pages out and tested and about to have a few more. After Nov 1st and before Dec 1st my goals are the following:


-Implement the payment gateway (between the pages and the security)


-Get the forums up and going, I think I'm going to be using  Community Server.


-Complete user logic


-Url Rewriting


-Ad rotation


-S3 Image upload from the browser (fileserver to S3) ... having trouble finding .NET support for this


-Choosing a production server, I'm leaning towards Rackspace?


I guess the point is it wont be a lot of development. Which is a bummer but it means I will be done by then (hurrah!!)


For those of us NOT at PDC, some MVP's and ASPInsiders are putting together a group #NotatPDC. For information on giving a talk or how to partcipate here is the email associated.


I DID catch up on a lot of TV over the weekend. SNL was pretty good last night, however, there was a lot of Mad Men references. I'm a little paranoid now that I've been warned that Mad Men is due to jump the shark soon because of it's publicity. The Mad Men finale was good, as you can imagine I love me some Peggy, but come on, she deserves better than that, no. (look ma, no spoiler!) Dexter is becoming less relatable. I feel like he is letting his guard down in an unrealistic manner.


Does anyone watch the show Life? There were two great shows that NBC came out with last year. One was Journey Man and the other was Life. Journey Man was awesome, and it was SUCH a bummer it got canned (why do I feel like I've talked about this before) but Life is still on Friday nights. It's a cop drama, but it has a better underlying plot then most, I feel. The lead character was wrongfully imprisoned for years and then given his job back as a cop after he got out. He spends his life finding Zen for himself and trying to find "the real killers." I really admire people like this in real life who go through something terrible and are determined to face life with passion and not feel sorry for themselves, like this guy.


Oh, and of course every self-respecting nerd has to like Fringe. There is a Mulder shaped hole in my heart and I'm trying to let Fringe fill it. It's hard, but I'm sure it's like riding a bike.



How To: Use Dynamic Images in the ASP.NET SiteMapPath control









ASP.NET offers all kinds of controls for all of your development needs. I'm convinced that in 5 years there will be one control <asp:YourWebsite runat=”server”/> However, until that part there is still use for us programmers. Recently, I had use to use a new one and I thought I'd share my experience.



So, the SiteMapPath control is very convenient when you are adding breadcrumbs to your web application. However, if you want to make your breadcrumbs a little more dynamic then they are packaged, you will need to do it pro grammatically, I will share my process below. 


Ok, so step one: Creating your site map. Your control needs a datasource , and you have to add that in the form of an asp SiteMap. It's basically an xml page the guts of which look a little like this:


<siteMapNode url="Default,aspx" title="Home" >


<siteMapNode url="DoSomeJunk.aspx" title="Here's Where Users Do Junk" >


<siteMapNode url="AboutUs.aspx" title="About Us" />


</siteMapNode>




 


The outer node is the parent for the others, and that is how you indicate it in the site map. Ok, now creating your SiteMapPath control, your default datasource will be the web.sitemap, if you want it to point to a different site map you can set the SiteMapProvider property.




 


Your default SiteMapPath ends up coming out like this:




 




 


<asp:SiteMapPath ID="siteMapPath" runat="server">


</asp:SiteMapPath>




 


Now, you can leave it like that and it will look like this when you are on the About Us page:




 


Home > About Us




 


However, some of us like adding some snazz to our apps. My designer gave me breadcrumbs that look like kind of like this:


  HOME LOCAL SEARCH




 


Now, the SiteMapPath allows you to add images inbetween your links by populating the SMP (SiteMapPath)'s “PathSeparatorTemplate” property. There are a few templates in the SMP, the others are “CurrentSeperatorTemplate” which is the node that represents the page you are on, the “ParentSeperatorTemplate” which is the parent node (obv), and the “RootSeperatorTemplate (you get the drift). You can put an image in the PathSeperatorTemplate, or some words, a picture of your kids... whatever you want, and it will go between each one of your nodes like so:







However, since I had different pictures inbetween each of my nodes I needed to dynamically load the images in runtime after testing which nodes were displayed and where. Upon learning that the SMP had a ItemDataBound event I was able to load I t like a repeater (a control I use a little more often.) There are two ways to do this, I used an if statement,but it got a little long... It looks like this:




 


 


protected void siteMapPath_ItemDataBound(object sender, SiteMapNodeItemEventArgs e)


{


 


      var node = e.Item.SiteMapNode;


      if (e.Item.ItemType == SiteMapNodeItemType.PathSeperator)|


     {



          if (node.Url == "/Default.aspx")


         {


               ((Image) e.Item.FindControl("imgNode")).ImageUrl = "~/Images/blue-dot-small.gif";


         }


        if (node.Url == "/Classifieds.aspx")


        {


          ((Image) e.Item.FindControl("imgNode")).ImageUrl = "~/Images/green-dot-small.gif";


        }


 


        if (node.Url == "/ViewCalendar.aspx")


        {


             ((Image) e.Item.FindControl("imgNode")).ImageUrl = "~/Images/grey-dot-small.gif";


       }


}


}




 


So I graduated to naming my images after my pages and did this:




 


protected void siteMapPath_ItemDataBound(object sender, SiteMapNodeItemEventArgs e)


{


      var node = e.Item.SiteMapNode;


      if (e.Item.ItemType == SiteMapNodeItemType.PathSeperator)


      {


           ((Image) e.Item.FindControl("imgNode")).ImageUrl = "~/Images/" + node.Title + “_Breadcrumb.gif”;


     }


}


 


 


Skip Navigation Links


And that, I decided, was the best way, for now. So that's how you add dynamic images to your asp.net SiteMapPath control! Thanks for reading, and as usual:


 




Tuesday, October 21, 2008

An Anthem



I have an iPhone, I like the band Cake, I drink octane drinks, the whole world spins and I'm hunched over a 17" screen for 12 hours straight.


I'm a Developer.


I like math, I have a wall sized white board, I crack my knuckles, I don't do suits


I'm a Developer.


I'm the internet's engine, I am a Data Architect, I will break it without buying, I worship source control


I am a Developer 


I think I like Fringe, I might buy a Hybrid, I pirate music, I love War Games


I'm a Developer


My dishes have mold, I hope I fed my cat, My hair is greasy, I may sleep at work


I'm a Developer a week before release.

 



Wednesday, October 15, 2008

Reflection - Iteration 8 of 9

razor slide 


WHOOOOOOOOOOOOOOO!!!!!


Honestly, I kid. I know I've been doing a lot of complaining lately ... and in my defense I have been pretty stressed. This is a huge responsibility, and I take it very seriously. I'm enamored by the idea behind the site. I'm in love with the design. I seriously can't wait to forward the link around to everyone and get their reaction. I have been given many resources and freedoms as far as the development process, and that means so much to me. All in all I can't wait to step back and say "F-yeah, I did that." That being said, and I'm sure that many of you have been at this point in your development careers.



As I've discussed I'm a n00b. I started out with a SQL focus about 6 years ago. Dabbled a bit in VB. I have been doing ASP.NET/C# for about 2.5 years now. So, developing an application of this magnitude has been a rocky, rocky road. I've had a lot of support, but even now during crunch time, I'm exhausted. In a good way? I imagine this is how you feel when giving birth (if even one guy emails me that giving birth "is not that hard" I'm flipping the heck out. Men always say this and should never EVER no matter what your wife tells  you.) I imagine this is like that part where it is most painful and almost over. I have one page left to develop. It's a doozy. I have some loose ends to tie up on 3 others. November 1st is my Alpha deadline. Then December 1st for Beta.



Tonight I am getting a decent night's sleep. I left earlier than usual. However, lately not so much. Again, I'm not complaining! This will all be worth it in the end, such an accomplishment for myself. I'm so excited.



Any words of support or advice from people who have been here are much appreciated. Any words of "HOLY CRAP YOU STILL HAVE A WHOLE PAGE" will be greated with sobs.



What am I struggling with? Well, how to load my images and store them related to certain records (using LINQ for objects thus far). Allowing users to upload video. I'm using s3, but I have to build an interface (along with consultant) for uploads. I have found a consultant to do the import from File Maker Pro who is versed in SQL Server 2005 and FMP which is hard to find, however, I worry about how he will do and his speed. I'm worried that I wont get the last page done in time. I worry that I'll never end this post and get some sleep...lol... so, if you want to know what I will be dreaming of you got it.



Anyway, good night, all.


Sara




 



Sunday, October 12, 2008

Philly .NET Code(nerd) Camp


So, this Saturday I went to my first Code Camp. It was cool to know there were that many nerds(myself included) in the area (kind of my area). I could have done without all the Phillies gear (go Dodgers! or Rays! or Boston!). I learned a whole bunch. My personal favorite talk was about REST programming with Sam Gentile. I thought his talk was entertaining and informative. Great learn.


Two cool things happened, I was approached by a Microsoft Evangelist about their budding woman developer program. She explained that they are researching the desire for one.Apparently there are two schools of thought

"I'm a woman developer, therefore I am unique" and "I'm a woman developer, don't single me out." I guess we all know what school I am in,lol. I am quite proud of being a female developer. Not because it has been "hard" or I've been "discriminated against." Because I honestly believe being a female in this industry has been more of an advantage than a handicap. I just think it's different. I think there are things that are unique about us and I'd love to discuss it. Also, I'd love to learn what environment other women grew up in. That way we can learn how to make more of us!


I was also approached by a woman who wants to start a women's user group in NJ which is hardcore. It's funny because I have many male developer friends, and I love them, but there are some things I can't talk to them about. Even just last week after I had pulled an all nighter working I found myself wishing I had a woman to talk to about it. You know? It's just different. It's not sexist, I don't believe that sexism is recognizing the difference in the sexes. I think that the differences and overcoming some of them, is what makes today's woman awesome.


Anyway, all in all, good experience. Will write a longer review this week. I feel guilty because I got NO work done today and I had intended on doing a bunch.



Wednesday, October 1, 2008

New Article Published

Feel free to comment here as it takes a while to get feedback from the site. :)



Clicky Clicky



Monday, September 29, 2008

Reflection - Iteration 7

My poster now says "Iteration 7 of 9" with is a added comment in big black marker of "OMFG" underneath it. Ok, it's not that bad yet, however, I'm almost there. What's stressing me out right now is not the code, that part I can do, it's all the other stuff. The making sure 2430978 things that need to be done GET done and meanwhile get all the coding done. When do you know that you need someone to do this stuff for you? I think I may talk to someone about this.


Complete pieces are coming together, everything is really good looking. The site in general is going to rock all over the place, knock your AJAX off and all that. I should have a fully testable page up this week, and this page is the crux of the app so when it is done I will be pleased. Having some headaches adding the HTML right now. I made some changes and didn't test them, then added the HTML and now I am getting bugs and don't know if it's the HTML or my changes and it's too early in the morning to Inspector Gadget this mess so it's going to wait.


Besides that things are going great. I think I am going to Philly Code Camp on Oct 11th? That's exciting, it will be my first... . I was tempted to take the ALT.NET track, but I think I'm leaning toward Architecture. That's one of my weaknesses and I would like to focus more of my development around services. I wonder if you can mix and match?


I'm starting to really look forward to these education opportunities. I am missing the SQL 2008 talk at Microsoft this Thurs... so if anyone has info on another please let me know. I have heard about intellisense and multi row inserts, but would like to hear about the rest. Has everyone heard that JQuery is going to be packaged with the next Visual Studio?


SPEAKING OF SQL, if anyone out there is an expert (or even a novice at automated ETL for SQL 2005 I could really use some help. I have to admit not touching the new SSIS and am starting to miss DTS packages. The documentation is really lacking.


Thanks to everyone who has spread good will about my web absence last week. I assure you I am well and no one was hurt.  Below are some pictures from the closing ceremonies at Shea stadium this weekend, I was able to score some nosebleeds over the weekend for my brother and I (we were sans one brother, who was busy being a dad, and who is now developing pharm data acceptance apps in command line (DOS) as part of his job which is AWESOME). It a great opportunity and I'm glad we went. I was raised a Met fan along with the generation before me, and seeing the closing pitch btw Mike Piazza and Tom Seaver and all the 1807120947234 camera flashes going at once was very cool. Also being in the same place as Willie Mays? Indescribable. Someone said something about there being a baseball game between the first and second picture? I don't really remember anything of the sort.


J-E-T-S JETS JETS JETS


Before



After








Friday, September 26, 2008

No End of Week Update This Week

Usually I try to post 2-3 entries a week however, this week no dice. I was in a car accident last night, I'm ok, everyone's ok. No one was seriously hurt except or an innocent telephone pole, but because of it I have been "indisposed".



Thought about asking a guy developer to don a wig and write something for me, but it just wouldn't be the same.



So, anyway, will be back next week in full force with the funny. :)




Thanks for reading,


Sara 



Monday, September 22, 2008

The Hitchhiker's Guide to Refactoring: Why, Where, When and How

 Arthur Dent was a Visual Basic spaghetti coder. Now, I have nothing against Visual Basic programmers,  don't get me wrong. There are some people that find what they like and stick with it. Arthur Dent was that guy and he did it for the wrong reasons. no matter what new adventure Ford Prefect and Zaphod Beeblebrox dragged him on there he was and he was stuck. Whether he was stowing away on a Vongon spaceship or colliding around time and space on the Heart of Gold Arthur Dent was just kind of going with the flow and allowing the mess. It sucked, but he wasn't going to stop it he was just going to complain. Trillian, to me, was a refreshing character that exploded off the page, that girl kicks. I've always had a special part in my heart for the girl that can storm into a chaotic room of disruptive scheming boys, quickly find the logical solution and start barking orders (whether they listened or not, in this case).

 


A programmer that knows how to refactor well is a Trillian. A true navigator, laying a sure, quick, path to the goal of the team. No mess is too intimidating and no solution is too distended. Lately I have learned that I have a real penchant for a good refactor. Especially now that I have my very own project, my bad boy is sleek, it's quick, and it's trim. It's a machine. How do you get to the point where you're comfortable knowing when to make the refactoring choice? I'm going to share with you what I have done in the last months, hopeully you can glean some wisdom.


Why Should I Refactor? 


        If we developed like we thought and no other way I think a lot of us would end up with a bit of a mess, and that's often what happens when putting together applications. Refactoring is a way to remove the bloat. To take out the extra junk that takes up space. It's also a way to improve functionality, to make improvements and additions easier. Lastly, it makes your application much more readable, and you know that with my passion for self documenting code that's one of the reason's I'm a big fan. 


Where Should I Refactor? 


    You should be very careful with this question because it's what stands between you and either a big mess,  a time sucking blackhole, or something absolutely beautiful.  I like to think of a refactored application as a skeleton, where the objects, the factories, and the utilities as the muscles (we can call the .css the skin if we want to get carried away). The more you refactor (the right way) the more power you give your application, more muscle. You give your application a chance to run itself, while you can work on features and shiny bells and whistles. To do this well have to ask yourself a series of questions as you code, you will get more and more sensitive to the process as it goes on. One is “Have I done this before?” another is “If I hadn't looked at this method (function... whatever you use) before would I immediately be able to tell you what it does based on clarity and variable naming?” also “Is there a better way to do this technically?” The answers will lead you to many potential sections to refactor, we've found our starting point and we can now advance down the path to a good refactor.


When Should I Refactor?


This is actually the most important question of them all. You need to be very sensitive about when to refactor because ideally we'd all looove to sit and refactor all the time. To make the awesomest application with all types of great technological patterns and concepts. However, then you get the coolest, and least functioning application. Also, try explaining to a client why you spent 80% of your time refactoring, they love to hear it. I find the best thing to do is simply ONLY refactor when you are already “there.” When you're in the midst of the smelly code. When you are working on something related to something else and you know a great way to tie the two together with a single method (or function, geez). You will often pass things by that would be “so better done like this...”, even things written by you six months later. Your best friend in this situation is //TODO:. I allow myself to mark those down, and this way if you, or someone else, happens to work on or with that section they can go to town.

 


How Should I Refactor?


The answer to this that isn't language sensitive is “tentatively.” You don't want to take on a huge task that will take you weeks when you don't have that kind of time on your hands to play with. You shouldn't go wild deleting sections of already functioning code on a whim. Think and plan well, talk out the new muscle you will be adding all the way through. Either with a co-worker, or even to your reflection. Make sure you know the full ramifications of what you're doing. Possible glitches, hiccups, and bugs. Make sure what you are doing is possible. Be prepared, be educated fully, and as always have fun with it. Refactoring is a powerful tool and once you get the hang of it refactoring will be you (and your project manager's) best friend.



How do you make a girl developer?

One Third: 


Nancy Drew





Two Parts:


Esther Nairn 


:


A Heaping Spoonful of:


 Beatrix Kiddo


 A Pinch of:

Pig Pen


  plus just a smidge of:


Carolyn Kepcher


Some Words by:


Wayne Dyer


Mix With: 


Tina Fey




Serve shaken, stirred, up, but dont forget the rocks. Please allow 2-4 weeks of recovery between doses. If you are pregnant, or have a heart condition please first consult a doctor. 



How do you make a you?


 



Thursday, September 18, 2008

Searching for wisdom... Dev diary 9/18

Five weeks left. Flipping? Who's flipping? Kidding, I mean I'm as calm as one can be in this situation. Anyone would be stressed with this much time left in their first big project. Controls are being completed, pages are coming together, consultants are doing their thing. Am I concerned about everything getting done? November 1st is the day we're scheduled to go alpha, I'm not saying when we're going into prod. Because I'm not even letting MYSELF think about it. As far as I'm concerned production is November 1st. Don't even think that I'm not going to be asking some of you to help me test, lol, because I will be.




 


Right now I'm wiring up some of the xhtml, I'm going to be just plowing through things (hopefully) the next few weeks. This post is going to be short, tonight a girlfriend and I are getting together and having a bottle of wine and I'm taking a night off. However, I have one question for all of you. I know that a lot of people that read my page have been here before, is there any kind of advice, or wisdom you can pass on to someone that's in this spot of the life cycle for their first time? I'd love to be prepared for a major hiccup, though I”m sure there will be others.




 




Good night all, here's to the four day work week! (seriously, ever since I heard that's what they do at 37 signals, my boss is now the oracle)



Tuesday, September 16, 2008

O'Reilly Web 2.0 Expo


Today was the O'Reilly Web 2.0 Expo at the Javits Center in Manhattan. Today was "Workshop Day" and that's what I thought looked the most applicable for me, I have a feeling the expo will be filled with things like this so I would be more productive at work. The conference was cool, there were SOME nerds which was awesome. I heart nerds that wear backwards baseball caps and dirty jeans and lean back in their chairs and don't care what you think, because if I was a guy that's how I would be. Plus I would skateboard. Not saying girls can't skateboard, because they totally can, but I digress. I met a few cool nerds, and think I made some friends.


There were also a bunch of people walking around loudly talking on their cell phones saying things like "Really? Did you check to make sure the blog was published? Ok, well then you should definitely twitter about it and post a bulletin. Ok, then check the adsense and call me back." BLECH. I'm SO on Web 5.0 at this point. My Space is SO the AOL of 2002 I'm deleting mine this week I'm almost embarrassed to be there. Twitter : Internet as DVR : Television, it just is. Developers need to come up with some anti-Web 2.0 terminology ASAP.


This morning I went to a talk about "Building Successful Next Generation Web 2.0 Applications," it basically reinforced in my mind that 'm doing the right thing. S3, REST, JSON, CSS, XHTML, AJAX, JQuery... the whole she-bang. It got me feeling pretty confident that I was keeping on top of things, however, I didn't learn much. This afternoon, however, was totally worth it. I went to a talk for Developers (which there were hardly any at all as seen here):




About Advanced Javascript given by this guy (PS, I just noticed, um he only MADE JQuery), is it weird that I decided his talk would be interesting because he had cool glasses? I think he may have skipped fourth period health to give this talk, I can say that because not 3 months ago my orthodontist asked me what grade I was in.... (it's like when you make racial jokes about your own race). Not only was the teaching tool he used awesome (See? You can edit and debug(kinda) and compile) but I learned a lot that I really want to play with. Javascript is like a mountain, once you conquer it you think it's awesome, but if it's in your way you abhor it. People that are good at JS freaking love it, and wouldn't live without it... but getting to that point is rough because of limited debugging resources and other languages that offer more functionality (because regardless of how fast the client is, the server has just so much more info) tend to be distracting.


So I learned about Javascript caching, which is cool. Basically what you have to do is declare a function's cache, like so:


Add.cache = {};


Then set it within a function like this:


                                                                                       

function Add(num){  

if(Add.cache[num] != null)

return Add.cache;

var ber;

ber = num + 1337;

Add.cache[num] = ber;

return ber;

}



then you can call the cache if the variable passed in is the same, through the cache.


assert(Add(3) == 1340, 'YAAAAY');



assert(Add.cache[3] == 1340, 'YerAwesome');



For small functions like this it means nothing... but when you're holding up processes with your insane JS calls this is super handy. I also learned about OO Javascript, and inheritance, and recursion (the only thing I was already aware of) and all sorts of fun things. I will do a more indepth post at a later date.


It never fails, though, at these talks there are always guys that ask questions just to ask them. Kind of like "stump the speaker" where they already know the answer but they are asking to see if HE knows the answer. This would be fine in moderation but when it happens over and over it's a bit annoying.


While I was in the shower the Mets decided to finish their nap, so the game is over. Now it's time for The Shield and 90210 (I don't even want to hear it that show is AWESOME). My card for Thursday this week starts my study on LINQ for filesystem. It looks hella useful and if it is I will make sure to tell you all about it.


ALSO, if anyone else is having trouble with their OpenId on StackOverflow (Technorati) please let me know, I can't log in, I'm experiencing analphylatic shock, I thought if there were a bunch of us we may be able to get the attention of the overseers.



Monday, September 15, 2008

Reflection - Iteration 5


     Did you know that developers don't ONLY develop at work? Well, apparently this is true, and the other stuff is tenfold when you are managing a project. That is the biggest thing I struggled with this iteration. It's hard for me to get in the face of consultants and make sure they are performing. I'm looking at them like a developer, and not like a manager. It's also hard to do all this stuff and still get my work done at the same time, however, I think I've come up with a system. I'm worth very little in the morning, I am 0% a morning person, so that's not a good time for me to be productive in development. However, that's a great time for me to get all the administrative stuff done... so starting this week that's what I'm doing.


    Things are taking me longer to do then I want them to. Part of this is because I'm green, another part is because I expect too much of myself and those expectations aren't realistic. I did get some cool stuff done this iteration, though. Like I published the first websiervice and did a bunch of AJAX-y crap. That was pretty sweet, I'm pretty proud of that.


    Web 2.0 conference tomorrow in NYC, let me know if you'll be there def taking advantage of the workshops. Also, if you have any experience with a DB product called Filemaker Pro I need a custom export written, or if you know any consultants that would be awesome.


   Here is a question I posted on Stack Overflow...would love to get some feedback here: 


I have two repeaters and an image inside an update panel along with some AJAX dropdowns with link buttons to the left. I want to update the data inside the update panel as fast as possible as values are selected from the dropdowns.


What do you think would be the best way to update the data? The repeaters are populated by objects, so if I could just filter the objects by some properties I could end up with the correct data. No new data from the server is needed.


Anyone have some ideas?



    Six weeks left until Alpha release. OMG. Thanks for all your support and feedback, my first "technical" post was daunting... and my initial reaction to the response was not too grown up (I got super defensive)... but over all it went well. For those who have been asking I feel much better, thanks. 


 EDIT: Also, looking for a good flash developer, looking for either a part time gig, or full time if in the NY metro area.


    Happy developing! 



Tuesday, September 9, 2008

NHibernate - When the Fun Begins


So, you've integrated NHibernate as your ORM, you've created your objects and your mapping files, sooo... what next? The exciting part, that's what. I mean, I KNEW what an ORM was, what I didn't know is that my SQL would be taken care of for me, all LINQ-style in my code. What I didn't know was how manipulatable my objects would be with the functionality that NHibernate provide


IQuery: This is the most flexible, and frankly the least exciting, NHibernate data manipulation interface. It allows you to just run an inline query and return either a list, or a single object. To return a list you would just


    IList listIDs = session.CreateSQLQuery("select id from Foo where name = '" + name +"'").ToList();


 For a single item you would use .UniqueResult() instead of .ToList(). Something I know is possible but haven't used yet is the CreateMultiQuery method, which allows the return of multiple query results for different criteria. You can also use CreateQuery in a more direct way with your objects by just instantiating your object then passing it into CreateQuery() and using .Add to add parameters to your query. This is more direct, but I have not used it because of this beauty:


   ICriteria:    Ok, so listen to this, you just pass in the TYPE of the object you are looking for along with some criteria and it puts together the whole query for you. Like if I'm only trying to find Foos when Foo.Name is something like Steve and sort it by ID then I do this (notice the use of implicit local variables, 3.5 rulez!):


var foo = new Foo();


var baz = session.CreateCriteria(foo.GetType())


.Add(Restrictions.Like("Name", "%Steve%"))


.AddOrder(Order.Desc("id"))


.List();




 


How awesome is that? Restrictions is a member of Nhibernate.ICriterion and provides you with a way to add equations, or search for values to limit your result set. I used the ”like” constraint since it is so familiar to we SQL cats, but there are many more. It's that easy. You can also do simple inserts and updates using a simple session.Save() transaction which is super handy.




 


Now, before you play with any of this fun stuff you need to remember to do the following




 


-Build your SessionFactory (this I do here not in my helper class, this is stolen code from somewhere on the intarnetz, if someone can find it I will credit.


-Check for an existing Nhibernate ISession (NOT ASP.NET Session)


-Open a Nhibernate ISession (if one does not already exist)


-Then load your objects like above.




 


The funnest (I know, and I don't care) thing I have done so far is refactor the above behavior into a helper class. I am going to give it to you below because I love it and think it is great. Tell your friends, and have fun with Nhibernate (possibly also have fun with all the time you save, maybe earn some CrackOverflow points).




 


 


public class NHibernateObjectHelper


{


public static ISession session;




 


public static T LoadDataObject<T>(int Id)


{


session = CheckForExistingSession();


var returnObject = session.Get<T>(Id);


return returnObject;


}




 


public static IList<T> LoadObjectListAll<T>()


{


session = CheckForExistingSession();


var criteria = session.CreateCriteria(typeof(T));


var results = criteria.List<T>();


return results.ToArray();


}




 


public static ISession OpenDataObjectSession()


{


session = NHibernateSessionFactory.OpenSession();


return session;


}




 


public static ISession CheckForExistingSession()


{


if(session == null)


session = OpenDataObjectSession();


return session;


}




 




 


public static void CloseSession()


{


session.Close();


}




 


public static void Save(BaseObject<int> businessObject)


{


session = CheckForExistingSession();


var transaction = session.BeginTransaction();


session.Save(businessObject);


transaction.Commit();


}




 


public static void Update(BaseObject<int> businessObject)


{


session = CheckForExistingSession();


var transaction = session.BeginTransaction();


session.Update(businessObject);


transaction.Commit();


}


 




 


}