Torrey’s Blog

My Application Development Ramblings

A Client Requests Time Traveling?

Posted by Torrey on August 13th, 2008

This is new and interesting. Just when I thought clients have reached the limit of requests when it comes to changes in their software they blew me away on this. I received an email from a manager at this client office that was asked by one of his big clients to recompile a year to date report of their repair jobs.

The funny part is that this same manager has updated financial figures in the database, and changed a savings calculation for his client 3 times total this year. His request was to somehow use old information for the old date ranges. Requests like this make me laugh, and think really silly stuff. I even mentioned in the email about scientists can’t even figure out how to trace back movement of energy to make time traveling to the past possible. :)

Someone has to tell these administrative people how it is, and maybe I’m the guy to do it! I’m in a joking mood, so don’t take that comment seriously.

Posted in General Development | No Comments »

Testing the eeePC 4G (XP)

Posted by Torrey on July 7th, 2008

The Asus eeePC 4G is more than capable of acting as a main computer for individuals that need to stick with something cheap, and don’t have a large need for super intense applications.

That opening sentence describes the experience I had using the eeePC 4G with Windows XP installed as the operating system over the course of 4 days. The minor details I haven’t mentioned yet was that after the first day I installed a USB mouse to make my navigation a little easier. The little touch pad is okay when you’re on the go, but if you’re sitting down at home the last thing you want to do is keep leaning forward to try and use a miniture touch pad that doesn’t always respond. I’m also using a Class 6 8GB SDHC card as a place to store temporary internet files, program files, and the my documents storage location.

As this device is a single core processor clocked at 633mhz stock, I decided to make use of the utility called eeectl that can overclock the processor to what speed it was originally designed for–900mhz. The utility works perfectly without problems, and even gives the user control over the fan & backlighting. There is also a icon that is placed in the system tray near the clock that displays how much of the processor they are clocked at (0-100%), and a tempature is also displayed in the icon animation. On those facts alone this makes eeectl a must have application for the laptop.

The laptop I was using still has the default of 512mb of RAM installed. This should be sufficent for most regular computer users, but as soon as I can it will be upgraded to 2GB for maximum performance. The last time I checked, amazon.com has the price around $51 with a $20 rebate available on the RAM module. Quite a bargin if you ask me!

I wanted to test out an intense application to see how the handling was, and used SecondLife as the test. Surprisingly, the intense network and graphics usage held up like a champ, but were a little choppy at times. The reasons for that would be the video memory, processor, and total ram available. I’m pretty sure that the performance would be great with the 2GB ram module installed, and will further test this out.

Here’s a list of some applications I tested out that worked perfectly like they would on a normal laptop or desktop PC:

  • Windows Movie Maker (also used the onboard camera as the capture source)
  • Corel Paint Shop Pro Photo X2
  • Skype
  • Windows Live
  • Windows Media Player 11 (used with media files and also NetFlix.com instant play movies)
  • Internet Explorer 6 & 7
  • Sandboxie (use this in combination with your browser to prevent spyware or worms–or any rouge applications you might want to run but are not that sure about)

The list really could go on and on. This little guy is capable of competing with the performance of other machines out there! If I would have found my Visual Studio 2005 installation disc I would have gave that a test run too. Although, with that tiny screen I’d have to make extensive use of the pins to hide the toolbars.

Before ending this post I’ll further talk about not using an anti-virus application. There maybe some users that will swear by using them religiously because of the whole mess of things that can attack your pc in numerous ways. These suggestions and information is based off my own experience, so take from it what you will.

Using an anti-virus causes lots of extra activity on the hard drive and in memory that would take a performance hit out of the eeePC that isn’t necessary. By understanding that most systems of today are infected by running rouge applications downloaded through peer-to-peer programs, and web surfing websites that contain ads that exploit your pc to run their spyware, you can use this knowledge to provide a slightly better solution to avoid using the anti-virus apps.

The major application for my demonstration today will be Sandboxie, by using this application you can run your browser in a controlled environment to prevent any nasty bugs from taking over your system, and also provide an outlet to testing applications or toolbars out before you install them. Sandboxie is extremely customizable, and let’s you explore the contents of what the application you’re running in the sandbox created. It has a number of functions, and it’s all for free! This solution alone can keep even clueless web surfers away from nasty malware found on sites like myspace.

If for some reason you end up with malware on your pc, use a program like IceSword to delete the rouge BHO (browser help objects) & startup references that are in your system. There are times when the malware will rewrite those references after you delete them, which will cause you go one more step further with technical know-how to remove them. This simply involves booting up a Hiren’s CD and using the NTFS drivers navigate to the folder and deleting the rouge DLL & EXE file names you found in the IceSword BHO and startup listings.

Hopefully, this gives you a nice starting overview of the eeePC and what it’s capable of. If you have further questions, comments, or would like to know more about a certain feature or function of the eeePC leave a comment.

Posted in review, anti-virus, eeePC, General | No Comments »

Code Monkey by Jonathan Coulton

Posted by Torrey on June 17th, 2008

This song had me laughing tonight, it’s really good. I’m going to add the song with the new podPress plugin, and place the lyrics under the player.

 
icon for podpress  Code Monkey [3:07m]: Play Now | Play in Popup | Download

Code Monkey get up get coffee
Code Monkey go to job
Code Monkey have boring meeting
With boring manager Rob
Rob say Code Monkey very dilligent
But his output stink
His code not “functional” or “elegant”
What do Code Monkey think?
Code Monkey think maybe manager want to write god damned login page himself
Code Monkey not say it out loud
Code Monkey not crazy, just proud

Code Monkey like Fritos
Code Monkey like Tab and Mountain Dew
Code Monkey very simple man
With big warm fuzzy secret heart:
Code Monkey like you

Code Monkey hang around at front desk
Tell you sweater look nice
Code Monkey offer buy you soda
Bring you cup, bring you ice
You say no thank you for the soda cause
Soda make you fat
Anyway you busy with the telephone
No time for chat
Code Monkey have long walk back to cubicle he sit down pretend to work
Code Monkey not thinking so straight
Code Monkey not feeling so great

Code Monkey like Fritos
Code Monkey like Tab and Mountain Dew
Code Monkey very simple man
With big warm fuzzy secret heart:
Code Monkey like you
Code Monkey like you a lot

Code Monkey have every reason
To get out this place
Code Monkey just keep on working
See your soft pretty face
Much rather wake up, eat a coffee cake
Take bath, take nap
This job “fulfilling in creative way”
Such a load of crap
Code Monkey think someday he have everything even pretty girl like you
Code Monkey just waiting for now
Code Monkey say someday, somehow

Code Monkey like Fritos
Code Monkey like Tab and Mountain Dew
Code Monkey very simple man
With big warm fuzzy secret heart:
Code Monkey like you

If you like this song and want to support the creator, then check out his website for information and great songs!

Posted in General | No Comments »

One Client CEO Is At It Again

Posted by Torrey on June 13th, 2008

The CEO I mentioned in my blog in the past is causing some problems again this week. Last week he asked for an update of what needs to be worked on for his company’s project. I gave him a list, diagram of the current system, and included a description of the capability and features of the software I’ve developed for him so far.

This past Monday I get an offensive email back as a reply. He doesn’t understand why there are 2-3 months of development left, the cost of out-of-pocket and not using the software is high, and a few other ignorant comments. What makes them ignorant is the fact his company has been using the software I’ve been in the process of developing since last April. This CEO is so out of touch with the day to day realities of his own business the guy doesn’t even know what they have. If you’ve read the book “Execution: The Discipline of Getting Things Done” you might remember this:

“Know your people and your business. Leaders have to live their businesses. In companies that don’t execute well, their leaders are out of touch with the day to day realities. They are getting lots of information delivered to them, but it’s filtered. Presented by direct reports with their own preceptions, limitations, and agendas. Or gathered by staff people with their own perspectives. The leaders aren’t where the action is. They aren’t engaged in the business, so they don’t know their organizations comphrensively, and their people don’t really know them.”

This little excerpt describes this guy perfectly. It’s a shame I have to deal with someone so ignorant. If he would have taken even 5 minutes of his time to talk with his people he could of had the facts to properly respond back. Software development follows a process, and this process isn’t always understood by leaders. I think it’s pretty straight forward.

  1. Requirements Specification
  2. Design
  3. Construction (implementation and programming)
  4. Integration
  5. Testing and Debugging
  6. Installation (deployment)
  7. Maintenance (updates)

That’s for the normal development process, and keep in mind for this project I basically have 3 total layers. First is the application and web development. This includes the new items and features. Second is the report development. And the last layer is maintence of the software modules previously created. This could go more in depth, but I’ll leave it at that.

For the sake of that CEO he’s lucky that my boss is a great communicator, because I’m sure he wouldn’t like the reality I’d spit back at him if given the opportunity. I’m not a verbal dancer of words, I will tell you how it is.

I’ll leave this post with two quotes I based off the book “Execution: The Discipline of Getting Things Done”.

“If everyone doesn’t commit to the changes they help make then the execution will not be successful.”

“An organization follows the behavior of its managers and leaders. If there’s no accountability or structure then people are going to do what they want, and cause execution to fail.”

Posted in General Development | No Comments »

Memory Leaks Cleanup Roto Rooter Style Snippet

Posted by admin on June 5th, 2008

This could be one of the most useful snippets know to man kind. Shove this bad boy into a timer that executes every so many minutes or after loading up some datasets.

  try
  {
     Process process = Process.GetCurrentProcess();
     process.MaxWorkingSet = process.MaxWorkingSet;
     process.Dispose();
  }
  catch { }

Posted in C# | No Comments »

Video Tutorials Idea for .NET

Posted by Torrey on June 4th, 2008

I’ve watched most of the videos at http://www.windowsclient.net and came to the realization that lots of what they show is near useless. From my experience in different programming communities is that lots of the newer programmers aren’t as creative as the older ones because they learn from videos like those, and then bug the hell out of people in those user groups for the necessary meat and potatoes.

Once I get Camtasia installed to this computer, I’d really like to take a crack at a video tutorial or two. I’m almost guessing in my mind that creating the complex videos that users would benefit from take a lot of planning and time to produce. We’ll see what happens, and what video topic ideas I can think of.

Posted in General | No Comments »

It’s not that peachy Microsoft!

Posted by Torrey on May 29th, 2008

In my last post I blogged about n-tier development and updating a dataset through a web service. Later that night I found the link from Microsoft showing how to update data through a web service. Well, I tried it out the next morning…Life is not as simple as they make it look! Trying to update that way ended up making my web service complain about the dataset not being the correct type, so I ended up using my first method. I also ended up adding a little extra flavor to the update webservice method so it’ll handle inserts, deletions, and updates. If I get the chance today I’ll post up the source code for that on my blog and also the snippets section of this website.

Happy coding, it’s almost the weekend!

Posted in N-Tier, General Development | 2 Comments »

Updating a DataSet Through a Webservice

Posted by Torrey on May 27th, 2008

Alright, so I’ve been racking my brain around this whole n-tier architecture and started converting one client’s software to this type of solution. When it comes to creating the various layers and web service that just pulls data it’s easy as pie. Updating a DataSet through a data access layer that communicates to a web service is a whole other story. Here’s a quick overview of how I achieved the update.

1) The smart client issued an update event that called the DAL (date access layer) update.

2) The DAL passes the DataSet to the web service. Keep in mind during the first two steps I used the generic type DataSet. The smart client doesn’t actually contain the DataSet types that are stored in regular applications that could made the update a whole lot easier, that’s the reason why I’m using the generic DataSet type.

3) The webservice uses the method below for updating the DataSet. The more reference material I read lately, I may end up changing the update method, I believe that I’m doing it partially incorrect even though it works perfectly.

         [WebMethod(Description = “Updates the edited Job Log row.”)]          public String update_tblJobLog(DataSet tblJobLogDS)          {              DataSets.tblJobLogDataSetTableAdapters.tblJobLogTableAdapter tblJobLogTableAdapter = new Company_Webservice.DataSets.tblJobLogDataSetTableAdapters.tblJobLogTableAdapter();              Company_Webservice.DataSets.tblJobLogDataSet typedtblJobLogDS = new Company_Webservice.DataSets.tblJobLogDataSet();              typedtblJobLogDS.Load(tblJobLogDS.Tables[“tblJobLog”].CreateDataReader(), LoadOption.OverwriteChanges,                  typedtblJobLogDS.tblJobLog);              typedtblJobLogDS.tblJobLog.Rows[0].SetModified();              try              {                  tblJobLogTableAdapter.Update(typedtblJobLogDS);                  return “Success”;              }              catch (Exception ex)              {                  return ex.Message;              }          }  

There’s actually a way I can just pass the rows I need by using the GetChanges method, then cycle through the loaded rows to update the RowState. This style of programming definately has its pros and cons, but I think in the long run it’s going to work wonders for scalability since this particular client is expanding like their is no tomorrow.

[edit]

Just googled the magic phrase and found out Microsoft actually has a code snippet that shows an easy way to update a dataset through a webservice. It figures I nearly make my brain bleed trying to get the update to process earlier, and Microsoft has the solution sitting right there. Sometimes all it takes is the magic search phrase…

[WebMethod]         public DataSet GetCustomers()         {             SqlConnection con = new SqlConnection(“server=servername;uid=login;  pwd=password;database=northwind”);             SqlDataAdapter daCust = new SqlDataAdapter(“Select * From Customers”, con);             DataSet ds = new DataSet();             daCust.Fill(ds, “Cust”);             return ds;         }       [WebMethod]         public DataSet UpdateCustomers(DataSet ds)         {              SqlConnection con = new SqlConnection(“server=servername;uid=login;  pwd=password;database=northwind”);              SqlDataAdapter daCust = new SqlDataAdapter(“Select * From Customers”, con);              SqlCommandBuilder cbCust = new SqlCommandBuilder(daCust);              daCust.Update(ds, “Cust”);              return ds;          }
   

Posted in Webservices, N-Tier, C# | No Comments »

Beginning N-Tier Development

Posted by Torrey on May 22nd, 2008

Within the past week or so I’ve started studying up on N-Tier applications since I’ve been experiencing overload on one particular client expanding faster than I can keep up with application maintenance. This client has grown so much in the past 2 months that I have been working almost non-stop to develop a solution that works with their business. Now that I understand what N-Tier is and means, I really feel silly for not looking into that sooner. You’ll read that it’s mainly for large scale applications, but there is actually a need for such a architecture in small business too. From this point on I plan on creating layers for every project I work on. It makes perfect sense and will ease future projects because I can reuse the various layers.

I would keep typing more, but I’m half asleep right now, so I’ll try to catch up with more posts tomorrow. Goodnight!

Posted in N-Tier, Infragistics, C# | No Comments »

AppStylist Bandwagon

Posted by Torrey on May 14th, 2008

Since I’ve had the chance to get back to coding a little bit outside of work, I’ve dug into an unused program that comes with the NetAdvantage package. That app is called AppStylist. After I figured it out and read through the documentation for using what it generates I started going nuts styling all my applications. The results you can achieve with the presentation layer are quite stunning. I’m sure my clients will appreciate the new look.

One thing I haven’t figured out if it’s possible or not is the ability to remove a loaded style from the running application. A majority of the Infragistic controls are documented, but AppStylist seems to lack a little in that department. I’m sure trial and error will pay off sooner or later.

In other news, have any of you read what scientists are planning to do under the Alps? They managed to create a device that will blast particles together traveling at light speed to recreate the big bang. Now is it just me or this sounds incredibly stupid? To top it all off I’ve actually had a nightmare about it the same night I read the story. The idea of them possibly causing a catastrophic event just freaks me out. Microsoft asks you how would you move a mountain in their interview process, this sillyness might be a possible solution.

Posted in Infragistics, General Development | No Comments »