Mini Post: Tags and Categories

I was helping my fiancee set up her blog, when she asked the question:  “What is the difference between tags and categories?”

I explained that categories were used for organizing your posts in a hierarchical manner, whereas tags can be used more for searches.  I tried to show her using my blog, to which I discovered:  I don’t use either correctly, at all!  I think my tag cloud is weak, and my category structure is non-existent.

Fortunately, Google, as always, is to the rescue.  I did a quick search on the topic, and discovered this blog post: Categories versus Tags – What’s the Difference and Which One? The blog post describes that categories are primarily for internal navigation on your site, should be fairly well defined and are hierarchical, whereas tags are better suited for searches on other sites such as Technorati. It’s also important to note that categories are not tags, but tags can be categories.

Over the next few weeks, I’ll be looking to incorporate a better category structure on my blog and work on creating better tags. It’s always fun to learn new things when trying to teach others.

Social Media Myths

When we think of social media, we think of Facebook, LinkedIn, Twitter and MySpace primarily.  Some call social media ‘Web 3.0.’ Truth be told, social media has been in existence ever since people could connect to an ISP.  We have forums, newsgroups, mail lists, chat rooms and even guest books.  In fact, we still have these grandparents of social media to this day, and still have great uses.

But I digress.  I read an article from WebWorkerDaily on six common myths which people not in the know believe.  The author, Aliza Sherman, attempts to dispel all the myths and does a great job doing so.  The myths and her explanations are straight forward and clear, but here are some that I had opinions on:

You can easily use your Facebook profile for both your personal life and work.
Aliza discusses that it’s hard to manage your facebook profile for both work and personal life, because it is difficult to have a healthy balance of work and personal life status updates.  I agree that this myth is false, however one thing should be pointed out:  you never know when a friend will turn into a business contact.  My suggestion is to keep work away from Facebook, but to update Facebook with big professional changes/events that happen in your life.  If your friends are truly your friends, they would be interested to know anyway.

LinkedIn is just a resume site.
I believe that LinkedIn is the best ‘social media’ site you can be a part of for your professional career. Making professional contacts and being introduced to 2nd degree contacts is a great way to get to know people and form a healthy network of potential clients, merchants, and yes-employers. While I agree that LinkedIn isn’t just a resume site (the author does a great job explaining this) I don’t think we should be blind to the fact that we ARE essentially putting our resume up for the LinkedIn world to see. Recruiters use LinkedIn to find candidates for other jobs. If a current employer is worried about such a ‘problem,’ they should focus less on where their employers are putting their information and focus more on being a great place to work.

Social media is the new advertising platform.
I am not sure how I feel about this myth and whether I agree it’s false or not. The author explains that with this old mentality of “hey, we can advertise on this!” is what caused the boom and bust of the ‘bubble’ back at the turn of the century, that we’d be foolish to apply the same methods of advertising on the social media platform because it’s supposed to bring the power back to the people.

If the myth read, “You can be successful using tried and true methods of advertising on the social media platform”  I would be inclined to agree that it is not true.  However, there is plenty of advertising going on in the social media world.  The ones which are most successful are those which don’t look like advertising at all.

Take a look at Twitter, and at some of the more prolific followers you have.  You’ve followed them for 6 months, they’ve always had interesting things to say, and you agree with most of it.  Then they post a link to their book.  If you’ve been following them and agreeing with them for a while, you’re inclined to go and at least check it out and see if you’d be interested.  You wouldn’t immediately unfollow them because they advertised–if you do, shame on you… stop being so pompous and take it for what it is!

Is this advertising?  YES, and it’s pretty effective!  It’s establishing trust before the purchase, something which is very difficult to do.

In conclusion
The article is very good. I’ve always thought what was missing from the social media world is a clear purpose. This article shows me that there are people thinking about it.

Oh and for my own myth:
Sites such as Facebook and Twitter will eventually be the death of blogging
This is false. Blogs are only enhanced by the usage of Twitter and Facebook. Blogs will always be important because:

  • Easily customizable
  • You can set your own rules and policies on your own blog
  • RSS feeds are a great way to aggregate and read blog posts
  • Much more adaptable to prose writing, which is missing from status updates.

What are your thoughts on social media and some of the misconceptions about it?

Apple and the app store: Are they doing it wrong?

Rotten AppleRecently I read an essay from Paul Graham titled “Apple’s Mistake” (if you’ve never read any of Paul Graham’s essays, I strongly suggest you check his web page out, http://www.paulgraham.com) which describes why the app store is not designed with the developer in mind, and that Apple is selling the apps a lot like how they sell their music and movies.   Paul indicates that if this problem isn’t fixed, developers will flock to other devices and companies once the market for them becomes bigger.

I’ve personally never submitted an app to the App store.  I have, however been involved in an App project which was rejected by Apple.  We submitted the app somewhere in the middle of October and did not get the app on the store until November 19th.  As far as I have been told, Apple rejected the app because it was sending too much data through the network, and wouldn’t disclose how much an app was allowed.

I am interested in mobile development because it’s becoming a major player in the communication and technology world.  If it were to take me a month to get an app released, it would make me think twice about developing it.

Apple claims that they have a review process for security purposes.  If done well, it benefits us, the developers, because if our apps are given the ‘seal of approval’ we will not have to sell security to our clients.

Here are four changes Apple needs to do in order to fix their process:

1. Provide a way to test the app against the approval process to the developers. Generating automated test cases and unit tests for applications should be done for ANY application you plan on releasing, but Apple should provide an ability to test your application based on their approval guidelines.  This way, a developer can be more confident in their submission

2. Rules and guidelines need to be more visible to the developer world. Giving developer’s access to all of the guidelines Apple uses to determine whether or not an app is accepted may result in them designing their apps just to avoid the apple hammer.  This aside, visibility enables developers to design with 100% compliance to what Apple’s needs are.

3. Developers should have more information about why their app was rejected and be able to challenge the decision. There needs to be a better process with facilitating rejections.  In the case of the app I was involved with, simply stating that we are sending too much data and not disclosing how much you are allowed to send is a terrible experience.  This means that our developers had to go back, find what was taking up most of the bandwidth, design it so it wouldn’t use as much, and hope it is enough.  This… is simply ridiculous.  Imagine it took an hour each time you compiled, found a bug and fixed it?  You’d quit your job in less than a week!

I also believe a developer should be allowed to contest a decision to reject an app. Suppose in our case, we had good reasons for sending so much data?  What if it truly enhanced the usability of the iPhone?  What if the data was being sent for a good cause?  It should at least be up for discussion.

4. Allow a private store area where you can release apps to a subset of users (perhaps by company) and loosen (or get rid of altogether) the approval process. It’s going to become more and more important for companies to come up with custom applications that only they will use in their own business.  Suppose a company had a large team of technicians and wanted to provide a logging program for their iPhone.  How would they be able to do that easily?  I know you can provision separate phones for an application, but that seems clumsy.

I love Apple, and I am hugely impressed with the amount of professional looking apps are being released in the store these days.  However, other phones are going to become real competitors.  If Apple doesn’t want to lose their user-base, they need to keep the app store thriving.  In order to keep the app store thriving, they need to make their developers happy.

Xbox 360 modding- should you be banned from Live?

xboxcontrollerAs you may know, Microsoft banned between six hundred thousand and one million Xbox 360s. Microsoft claims “All consumers should know that piracy is illegal and modifying their Xbox 360 console violates the Xbox Live terms of use, will void their warranty and result in a ban from Xbox Live.” (from AFP).  Users with modded banned Xboxes are claiming they should be allowed to mod their Xboxes because not everyone is using them to play pirated games.  Other users feel that the bans came conveniently after the two major releases:  Modern Warfare 2 and Halo 3: ODST, which were after boosts in the number of subscriptions. There is even a website dedicated to a class action investigation.

Before I give an opinion, I’d like to look at what can be done with a modded Xbox.  The mod will give control over the DVD player, which allows you to reduce the speed of the drive and bypass checks that makes sure a game is legit.  As far as I can tell, you can play pirated games, back ups, and slow the drive down so the device is quieter.   I’ve also seen reports that it allows you to replace the hard drives with normal hard drives, but they are still limited to the 20 GB and 120 GB constraints.  An original modded Xbox made an older generation machine into a media center powerhouse.  This mod for the 360 looks to be for one thing:  piracy.

So… Should mod users be banned?  Yes, for three reasons:

It promotes piracy. Piracy is illegal, and for someone in my line of work, it’s also unethical and is completely against my principles.  I am a developer, and the thought of someone copying and distributing my work for free without my permission turns my stomach.  I guess it can be argued some pirated software is less crippled than the legit software (I hate it when the software constantly “phones-home” to make sure I’m legit) but it is simply not the case in this situation.

Allowing modded software can lead to exploits for multiplayer games. I see nothing wrong– especially on a console — to disallow the user from installing non-approved applications on the console.  It makes security much easier to maintain, and it gives all users a consistent experience when playing online.Apple closely monitors the app store.  They require approval before accepting any app into the store so they can make sure there aren’t any virus-type apps being uploaded.  In fact, the most recent exploit of the iPhone had to do with those iPhones which are jail-broken.

Xbox 360 is not open source. Microsoft never invited you to hack and mod their system.  In fact, doing so voids the warranty.  They have decided to do this, and as a purchaser of their product, you’ve made the decision to comply.

I’m sure there are a lot of opinions about this.  Let me know what you think!

You versus Them: THEY NEVER UNDERSTAND ME!

Sad dogIf you are an IT professional interacting with another department, you’ve probably been in a situation where they just weren’t getting your pitch.  “Why can’t they just understand the problem!” you probably say to yourself.   “They just don’t understand the benefits of the solution!”

How do you make your point and keep cool in the process? I’ve come up with two lists: one to facilitate why we get these responses and one to better facilitate the discussion.

What is going on:

It’s not about how smart you are.  You both have different expertise. Do you always trust your mechanic’s opinion? Have you ever second guessed your doctor?  Ignorance can invoke different reactions.  Some people will not trust an opinion until it has been explained in a way they understand. Let’s say you were buying a house for the first time.  You go and try to understand the process.  There’s so much information that it’s natural to get frustrated and question the process.

Don’t take it personally. We as human beings take things to heart more often than we should and we tend to read into criticisms as a personal attack.  According to You Can Be Happy no Matter What by Richard Carlson, we tend to interpret criticisms based on our thought systems, which is generally not the reality.  Accepting the actual reality of the opposition rather than interpreting its intent will allow the conversation to be more subjective and thus, more productive.  This not only works for IT professionals, but for any professional in a similar situation.

They may be insecure. Someone comes into your workspace, starts discussing a project and you just don’t know where they are coming from.  It makes you feel anxious, nervous, and sometimes, combative.  When you are on the giving end of these conversations, you tend to misread the confusion as either disinterest or anger.  Being IT professionals, it’s easy to be on the giving end of this exchange–  not because we are smarter, but because we have a more specialized position.

You may be insecure. Perhaps you are not 100% sure your solution is the best one for the problem, but it’s certainly the best for you.  You pray that you have an easy sell so that you can do it.  If you are that unsure of your solution, perhaps you should rethink it.

Just like you, they are trying to get their jobs done. This is especially important when everyone is under time constraints.  IT has a nasty stereotype of being that jerk IT guy from SNL or the policy police.  They don’t want an explanation of the reasons why you cannot do it, they want a solution.

What to do about it:

Prepare in advance for the conversation. Do anything to help prove your point.  Remember, you are trying to sell a car to someone who knows nothing about cars!  My suggestion is to quickly bullet out the points you believe would help you explain your point better.  Simplified diagrams and analogies also work, but be VERY careful to not insult their intelligence.  Remember it is a two-way street– picture yourself getting an oversimplified explanation about something you need to know about.  You’d feel insulted and silly.

Try to fully understand what their issue is first. Sometimes you can avoid having the “technical conversation” altogether if you can come up with a different and simpler solution to their issue.  It may not even be IT related.

Accept the fact that they may be right.  Perhaps it is you who have over-analyzed and over-complicated the problem.  Sometimes the “why don’t you just do x” is the answer.  Opening yourself to this possibility early on in discussion can prevent unnecessary arguments and wasted time later.

Only discuss alternatives if they are viable solutions. Keep in mind these discussions’ purpose are to move a project forward; not to prove to the other person you’ve done your homework.  Unless they’ve specifically asked you to look into a situation, don’t bring up solutions you think are not going to work.

Keeping these thoughts and tricks for you will yield a happier you, a happier them, and ultimately, a stronger work relationship and environment.

DotNetNuke Settings Issue: Truncated Data

DotNetNuke is great.  It has a great established core, along with a fairly straight forward process for developing extended modules.  You can use the already established DotNetNuke settings framework in order to facilitate settings for each instance of your own module.

We have a unique install in which we have central data that is shared by many custom modules.  I needed a way to have specific settings per portal, so I built a custom settings library.  I also wanted to be able to override these settings so I built in an XML parser to do so.

I found out the hard way that the settings table has an nvarchar size of 2000.  This almost never affected us, since the XML is generally smaller than 2000 characters, but I had one setting that went over.  It messed up my xml, and broke my module.

My immediate fix was to change the core database.  I made the settings to be nvarchar(MAX), and set up the add and update stored procedures to accomodate them.

I believe the best way to fix the issue without changing the core is to create another table, which either has a text type or a varchar(MAX) as the value.

Visible=”false” vs. display:none;

I find that when you are a new programmer or a programmer using a technology for the first time, there are a few gotchas’ that could make or break your learning experience.  When learning the power of .NET, especially after developing primarily in PHP,  the differences between Visible=”false” and display:none; was a huge gotcha for me.   I figured I’d help you realize what exactly the differences are and when you should use one or the other.  Take the source code:

<asp:Panel style="display:none;">
Error Message
</asp:Panel>

and

<asp:Panel Visible="false">
Error Message
</asp:Panel>

If you were to render both of these, you would see the screen the same thing: nothing.  However, if you look at the source of both of them, you will realize that the former will appear in the source but the latter will not.  That’s because in the first example, command display:none is CSS, which is client-side and in the second example, “Visible” is a server-side. On more complex pages, they are very much different.

When to use the display:none;

Let’s say you have a form in which you want to hide some elements of it, entirely for user experience (perhaps you want to hide the address field in case it is optional). If you used Visible = false, the button would have to postback, run back-end code to change the visible=”true” and render back to the browser the entire page. This exercise taxes the server, and is not an optimal user experience. It would be nicer to open the box via javascript.  if you used style:none; on an element, you would just need to run display:block; in order to show it.

When to use Visible=”false”

If you will never need access to the element via Javascript, then this is the better function to use.  This way, the element will never get rendered, and therefore keep the precious bandwidth of your pages to a minimum.  Also, maybe you want to run server-side code when you restore the address field. In this case, it is better to use Visible=”false”

I hope this helps you better understand the differences between the two types of hiding elements in .NET.  If you have any questions, let me know!

ModalPopupExtender .Show() Caveat

I’ll admit it… I don’t mind AJAX.NET.  In fact, I like a lot of the toolkit controls they provide.  Because I am “chained” to .NET and DotNetNuke, I don’t much of a choice when it comes to bleeding-edge technology.

One thing I tend to use frequently is the ModalPopupExtender.  I had a requirement to show the modal popup when the page loads.  Easy enough, I just instansiate the code and in the onLoad code-behind do mpe.Show().

However, this didn’t work It gave me an ugly error.  After sifting through a bunch of unhelpful forum posts online, I came across this issue in the AJAX Control Toolkit issue tracker.  Reading through the description, you notice that the problem has to do with the fact that there is a missing semi-colon if you try to invoke the modal through server-side on a page with validation.

Because the modal I was programming would not need the validation on the page, I simply turned off validation when the modal was invoked.  This worked like a charm.  If you require validation with the modal, I strongly suggest you check out the issue tracker page.