Friday, June 28, 2013

Xojo Real Studio

A majority of us use the web to do research – it’s faster, easier and the information is fresh.  For years I was a frequent visitor to Ramblings, a website/blog run by Aaron Ballman.  In my opinion, it was THE definitive source for many things in REALbasic.
For those of you that are new to REALbasic, Aaron was one of the REAL Software developers that worked on REALbasic.  We was with the company for seven years which is a long time in the software industry and in many respects REALbasic bears his signature.
In his new book, Ramblings on REALbasic, Aaron took many of his old blog posts, cleaned them up with new information, rearranged the order and put them in book form.  The book is divided up into Knowledge Base, REALbasic Language, User Experience, Windows, Design Patterns, Plugins, Other Languages and Just for Fun.
The Knowledge Base is a rather large collection of changes, gotchya’s, and miscellaneous information dumps about REALbasic that Aaron wrote about for years.  REALbasic is ever evolving and Aaron wrote about the bugs or misunderstandings to give us (the REALbasic developer) a little insight into what or why it happened or how we are misusing it (which happened more often than we’d like to admit).
The REALbasic Language section goes into specific REALbasic features.  I guarantee that you’ll learn something about REALbasic in this section.  Aaron writes it not as an end-user but as someone who is writing the compiler and having to support people like you and me on a regular basis.
A good portion of REALbasic developers use RB on Mac OS X and we sometimes take a Mac-centric viewpoint of developing software for Windows.  In the User Experience and Windows sections, Aaron goes into detail on some of the finer points of the Windows experience.  If you’re not a Windows expert (and even if you thought you were), these are must read sections.
The Plugins section is an alternative to REAL Softwares woefully incomplete documentation.  Aaron does a nice job of explaining how plugins work with the IDE and then goes into details that most of us will never use (unless you want to make a plugin that is).
The Design Patterns section is particularly interesting because he creates the design patterns using REALbasic.  Design patterns are coding patterns that, if you’ve been doing software long enough, you start to see over and over again.  Bigger, more complex applications probably have some of these coding patterns in them already (even if you didn’t know it) but it’s nice to get the theory and uses of them in REALbasic, up front.
Aaron does a good job of pointing out bugs and flaws in REALbasic and which versions they occurred in.  Some of those flaws are fixed in later versions of REALbasic, and he doesn’t always note if they’ve been fixed or not.  I can understand the complexity of finding out when bugs were fixed but it makes the text incomplete in my opinion.
Another missing feature, especially for the design patterns section, is downloadable project files.  It’s one thing to list the source code and explain it, but it’s entirely different to have a working example that you can step through.
While it’s sometimes nice to have a paper book to thumb through it’s getting harder and hard to justify the cost of a book that will lose its relevance in a short period of time.  This is not new to Ramblings or any book on technology but the REAL Software Rapid Release Model guarantees that any paper book will quickly become, if not obsolete, dated quickly.
Download Link : http://rapidshare.com/files/3295947299/REALbasic%202009%20Release%204.rar

Windows 8.1 Preview Now Available

Back in May, Microsoft announced the first major update to Windows 8. While the free upgrade was once codenamed Blue, a public preview of Windows 8.1 is available starting today. Most notably, Windows 8.1 brings back the Start button, a point of sincere contention for many Windows 8 users. The full release of Windows 8.1 is still scheduled for some time later this year.
Writing on the Windows Blog, Microsoft's Brandon LeBlanc runs through some of the basic improvements included in the Windows 8.1 update. The "Metro" tiles in Windows 8 are now more customizable in terms of size, allowing users to set the tiles as "really big" or "really small." LeBlanc notes this change is most applicable to tablets, where scaling down the tiles allows for more screen real estate.
win8preview
"The best part is my Start screen customizations, apps, and files get synced across all my Windows 8.1 PCs and tablets, which is awesome," writes LeBlanc. "If I change my Start screen, install new apps, pin new apps to my Start screen on one PC – that all gets synced to my other PCs."
The Windows Store has also received a redesign, and beyond obligatory updates to some Windows 8 apps, Microsoft is planning to announce new applications sometime today. You can download the Windows 8.1 preview right now from the Windows Store, but as always, be sure to back up all your data before installing. As an additional note, the preview is not available for Windows RT users at this time

Friday, June 14, 2013

A Beginner’s Guide to Big O Notation

Big O notation is used in Computer Science to describe the performance or complexity of an algorithm. Big O specifically describes the worst-case scenario, and can be used to describe the execution time required or the space used (e.g. in memory or on disk) by an algorithm.
Anyone who’s read Programming Pearls or any other Computer Science books and doesn’t have a grounding in Mathematics will have hit a wall when they reached chapters that mention O(N log N) or other seemingly crazy syntax. Hopefully this article will help you gain an understanding of the basics of Big O and Logarithms.
As a programmer first and a mathematician second (or maybe third or fourth) I found the best way to understand Big O thoroughly was to produce some examples in code. So, below are some common orders of growth along with descriptions and examples where possible.

O(1)

O(1) describes an algorithm that will always execute in the same time (or space) regardless of the size of the input data set.
bool IsFirstElementNull(String[] strings)
{
 if(strings[0] == null)
 {
  return true;
 }
 return false;
}

O(N)

O(N) describes an algorithm whose performance will grow linearly and in direct proportion to the size of the input data set. The example below also demonstrates how Big O favours the worst-case performance scenario; a matching string could be found during any iteration of the for loop and the function would return early, but Big O notation will always assume the upper limit where the algorithm will perform the maximum number of iterations.
bool ContainsValue(String[] strings, String value)
{
 for(int i = 0; i < strings.Length; i++)
 {
  if(strings[i] == value)
  {
   return true;
  }
 }
 return false;
}

O(N2)

O(N2) represents an algorithm whose performance is directly proportional to the square of the size of the input data set. This is common with algorithms that involve nested iterations over the data set. Deeper nested iterations will result in O(N3), O(N4) etc.
bool ContainsDuplicates(String[] strings)
{
 for(int i = 0; i < strings.Length; i++)
 {
  for(int j = 0; j < strings.Length; j++)
  {
   if(i == j) // Don't compare with self
   {
    continue;
   }

   if(strings[i] == strings[j])
   {
    return true;
   }
  }
 }
 return false;
}

O(2N)

O(2N) denotes an algorithm whose growth will double with each additional element in the input data set. The execution time of an O(2N) function will quickly become very large.

Logarithms

Logarithms are slightly trickier to explain so I’ll use a common example:
Binary search is a technique used to search sorted data sets. It works by selecting the middle element of the data set, essentially the median, and compares it against a target value. If the values match it will return success. If the target value is higher than the value of the probe element it will take the upper half of the data set and perform the same operation against it. Likewise, if the target value is lower than the value of the probe element it will perform the operation against the lower half. It will continue to halve the data set with each iteration until the value has been found or until it can no longer split the data set.
This type of algorithm is described as O(log N). The iterative halving of data sets described in the binary search example produces a growth curve that peaks at the beginning and slowly flattens out as the size of the data sets increase e.g. an input data set containing 10 items takes one second to complete, a data set containing 100 items takes two seconds, and a data set containing 1000 items will take three seconds. Doubling the size of the input data set has little effect on its growth as after a single iteration of the algorithm the data set will be halved and therefore on a par with an input data set half the size. This makes algorithms like binary search extremely efficient when dealing with large data sets.
This article only covers the very basics or Big O and logarithms. For a more in-depth explanation take a look at their respective Wikipedia entries: Big O Notation, Logarithms.

*Post Via "http://rob-bell.net"

Tuesday, June 21, 2011

How to import an Excel file into SQL Server 2005 using Integration Services

Integration Services, which replaces Data Transformation Services (DTS) in SQL Server 2005, is a wonderful tool for extracting, transforming, and loading data. Common uses for Integration Services include: loading data into the database; changing data into to or out from your relational database structures; loading your data warehouse data; and taking data out of your database and moving it to other databases or types of storage. This article describes how you can use the new features of SQL Server 2005 Integration Services (SSIS) to load an Excel file into your database.
Note: There are several wizards that come with SQL Server Management Studio to aid you in the import and export of data into and out of your database. I will not look at those wizards; I will focus on how you can build a package from scratch so that you don’t have to rely on the wizards.
To begin the process, I open SQL Server Business Intelligence (BI) Development Studio, a front-end tool that is installed when you install SQL Server 2005. The BI Development Studio is a scaled down version of Visual Studio. Then I select New Integration Services Project and give the project a name. See image 1.
Image1:

When the project opens, you will see an environment that may look familiar to you if you have used SQL Server DTS; some of the items of the toolbox are the same. For the purposes of this project, I am interested in dragging the Data Flow task item from the toolbar into the Control Flow tab. (The idea of a Data Flow task is one of the major differences between DTS and SSIS packages. In an SSIS package, you can control the manner in which your package logic flows inside of the Control Flow tab. When you need to manage the data aspects of your project, you will use the Data Flow task. You can have several different Data Flow tasks in your project — all of which will reside inside the Control Flow tab.) See image 2.
image 2.

Double-click the Data Flow task that you have dragged onto the Control Flow tab. The available options in the Toolbar have changed; I now have available Data Flow Sources, Data Flow Destinations, and Data Flow Transformations. Since I am going to import an Excel file into the database, I will drag the Excel Source item from the Toolbar onto the screen. See image 3.
image 3
The Excel Source item represents an Excel file that I will import from somewhere on my network. Now I need somewhere to put the data. Since my plan is to put the data into the database, I will need a Data Flow Destination. For the purposes of this example, I will choose SQL Server Destination from the Data Flow Destination portion of the toolbar and drag it onto my Data Flow tab. See image 4.
image 4
To designate which Excel file I want to import, I double-click the Excel Source item that I moved onto the screen. From there, I find the Excel file on the network that I want to import. See image5.
image5
I also need to designate the sheet from the Excel file that I want to import, along with the columns from the sheet that I want to use. image 6 and 7 depict these options.
image 6
image 7
Now that I have defined my Excel source, I need to define my SQL Server destination. Before doing that, I need to indicate the Data Flow Path from the Excel file to the SQL Server destination; this will allow me to use the structure of the data defined in the Excel Source to model my SQL Server table that I will import the data into. To do this, I click the Excel Source item and drag the green arrow onto the SQL Server Destination item. See image 8.
image 8
To define the database server and database to import the data, double-click the SQL Server Destination item. I will define the server in which I will import the data, along with the database that the data will reside. See image 9.
image 9
I also need to define the table that I will insert the Excel data into. I will create a new table named SalesHistoryExcelData. See image 10.
image 10
Under the Mappings section, I define the relationship between the Input Columns (the Excel data) and the Destination Columns (my new SQL Server table). See image 11.
image 11
Once I successfully define the inputs and outputs, my screen will look like the one below. All I need to do now is run the package and import the data into the new table by clicking the green arrow in the top-middle of the screen, which executes my package. See image 12.
image 12
Image 13 shows that my package has successfully executed and that 30,000 records from my Excel Source item have been transferred to my SQL Server destination.
image 13
Sample Excel file is image14

Wednesday, May 25, 2011

Intel i3 vs. Quad Core - Processors ?

i7 = 4 physical cores / 8 threads (Operating system reads 8 cores)
i5 = 4 physical cores / 4 threads (Operating system reads 4 cores)
[dual core] i5 = 2 physical cores / 4 threads (Operating system reads 4 cores) (like an i3 but faster graphics)
i3 = 2 physical cores / 4 threads (Operating system reads 4 cores)
Qxxxx series = 4 physical cores / 4 threads (Operating system reads 4 cores)
Exxxx series = 2 physical cores / 2 threads (Operating system reads 2 cores)


Physical cores are actual 'real' cores. Threads are how many ways the data is transferred. Generally the number of cores match the number of threads but Intel's new i3/i5/i7 series have different amount of threads and cores which is called Hyper threading (typically two threads per core)
The new iX series are better because they run cooler, use 32nm, better memory latency and of course, hyper threading.
Different programs use different amounts of cores so depending on what you use, the performance will be different. If you use a program with multicore then the i7 will be faster, even if it has a slower GHz because of its 4 cores plus hyper threading (8 threads total)
Personally, I would get the i3 if you don't use any hardcore programs like Adobe Suite, or something like that.
By the way, the new i3's and dual core i5's have graphics chips built in to them. The quad core i5 and i7 do not have onboard graphics.

Tuesday, May 24, 2011

Resume tips for experienced IT pros

You’re an experienced IT professional. You’ve been around the block and done it all. You think your resume is packed full with great stuff because years ago, you read all the articles on how to build the perfect resume and you’ve been following most of that advice ever since. Any employer should take one look at your resume and hire you on the spot, right?
That’s what I used to think too. I’m not a resume expert, but I thought I had a killer resume. Then, three potential clients in three month’s time nixed me because they thought I was “light” in areas where I was actually a specialist.
If that isn’t a wake-up call, I don’t know what is. So I called a close friend of mine, who is an IT manager at a large company. He knows my abilities, he’s an IT geek at heart, and he’s seen a ton of resumes. He looked at my resume and said, “Yep, I’d have thrown it right in the trash.” I called a couple more friends in similar positions. “It could use some improvement,” one of them told me. Ouch. At least they were honest. Basically, I had a resume that would sell me as an administrator or engineer, but not as an architect or consultant, which was the type of work I was looking for.

I began gathering comments and suggestions from these guys and completely rebuilt my resume from scratch. What I learned in this process is that building a resume for experienced IT professionals who want to land higher-level IT jobs is quite different from building the average resume to land entry-level administrator jobs.
I am going to share eight resume tips that sum up what I have learned.

Resume pointers

Most of the standard rules for building a resume still apply: Make sure you have a readable format, proofread for spelling and grammar errors, keep it simple, etc. However, experienced IT pros need to follow some more specialized guidelines. A few of these tips may actually contradict your previous notions of what to include (and exclude) on your resume. They certainly contradicted mine.
  • Keep your list of “core skills” short and sweet. When you’ve worked with a lot of different technologies, you want to show the world all you’ve done. However, having a long list of core skills actually gives the impression that you know only a little bit about most of those things and that you’re a generalist, not the specialist that the potential client/employer needs. Keep this list to a handful of key skills or possibly eliminate the list altogether.
  • Don’t list certification exams. At the very least, minimize the impact of this list. The average IT pro might want to list exams passed to build up a resume, but for the IT veteran, this actually marginalizes real-world experience and accomplishments.
  • Quantify projects and results. For example, if you do an Active Directory implementation, specify how many sites, domains, and servers were involved. If you design an e-commerce system, specify the increased percentage of sales that resulted from the project. Tell the potential client/employer exactly how you helped a previous company that you worked for.
  • Bullets, bullets, bullets. Don’t use paragraph style writing to describe your projects, tasks, and duties. Bullet-point every major accomplishment or project and leave out the minor things. (Your resume is already going to be too big anyway.)
  • Include examples of work, if possible. For instance, maybe you’ve written articles for an online magazine, or perhaps you built an e-commerce site. Include links to pertinent examples so potential clients/employers can see firsthand what you do.
  • Highlight major accomplishments. If you’re a high-tech consultant, you may have a lot of smaller projects and clients. Maybe you were hired as a “grunt” for a couple of short-term assignments but had a major project last year. You can’t exclude the small stuff, or potential clients/employers will question what you’ve been doing. But you can minimize the impact by focusing attention on the bigger things. Some ways of doing this include using a slightly larger font, boldface, or italics, or even drawing a thin border around the major accomplishments. But don’t go overboard-subtlety is still key.
  • Seek advice from actual managers. Recruiters, agents, brokers, and human resource personnel are all different from managers. Managers want to see results, and they usually know how to spot a weak candidate. If managers think your resume reflects someone who can’t do the job, you’ll never get anywhere. Run your resume by some managers you know and have them critique it for you.
  • Know when to stop. If you list all your experience from all the jobs, contracts, or projects you’ve handled, your resume will be more like a book. Find a place to stop listing your experience. If you feel you must at least acknowledge previous experience, try making a separate section and just bullet-point where you worked and what your title/function was. Of course, you’ll usually want to do this only for the less-accomplished jobs that you don’t want to highlight on your resume.

Monday, May 23, 2011

10 things you can do to conserve Internet bandwidth

As organizations move more and more services to the cloud, it is becoming increasingly important to make efficient use of the available Internet bandwidth. Here are a few techniques you can use to conserve Internet bandwidth in your own organization.

1: Block access to content-streaming Web sites

If your organization allows employees to use the Internet for personal use, the first thing you should do is block access to streaming media sites, such as Netflix, YouTube, and MetaCafe. Playing the occasional YouTube video probably isn’t going to have a crippling effect on your Internet connection, but streaming videos do consume more bandwidth than many other Web-based services.

2: Throttle cloud backup applications

If you’re backing up your data to the cloud, check to see whether your backup application has a throttling mechanism. An unthrottled cloud backup solution will consume as much bandwidth as it can. This might not be a big deal if you’re backing up small files (such as Microsoft Office documents) throughout the day. But when you first begin backing up data to the cloud, an initial backup must be created. I have seen this process last for months, and if left unchecked, it can have a major impact on your Internet bandwidth.

3: Limit your use of VoIP

VoIP is another bandwidth-intensive protocol. If you plan to use VoIP, you might implement a policy stating that phones are to be used for business calls only. While I will be the first to admit that employees sometimes need to make calls that aren’t specifically related to work, almost everyone has a cell phone these days, so limiting the office phones to business use only shouldn’t be a big deal.

4: Use a proxy cache

A proxy cache can help limit the amount of traffic created by Web browsers. The basic idea is that when a user visits a Web site, the contents of the page are cached on a proxy server. The next time that person visits that Web page, the content does not have to be downloaded because it already exists in the cache. Using a proxy cache not only saves bandwidth, but it can give users the illusion that your Internet connection is much faster than it really is.

5: Centralize application updates

Today, almost every application is designed to download periodic updates over the Internet. You can save a lot of bandwidth by centralizing the update process. For example, rather than let every PC in your office connect to the Microsoft Update Service, you should set up a WSUS server to download all the updates and then make them available to the individual PCs. That way, the same updates aren’t being downloaded over and over again.

6: Use hosted filtering

If you operate your own mail servers in-house, a great way to save bandwidth is to take advantage of hosted filtering. With hosted filtering, your MX record points to a cloud server rather than to your mail server. This server receives all the mail that’s destined for your organization. The server filters out any spam or messages containing malware. The remaining messages are forwarded to your organization. You can save a lot of bandwidth (and mail server resources) because your organization is no longer receiving spam.

7: Identify your heaviest users

In any organization, there will be some users who use the Internet more heavily than others. It’s a good idea to identify your heaviest users and to determine what they are doing that’s causing them to consume so much bandwidth. I have seen real-world situations in which a user was operating peer-to-peer file-sharing software even though the administrator thought that the users’ desktops were locked down to make it impossible for anyone to do so.

8: Aggressively scan for malware

Malware can rob your organization of a tremendous amount of bandwidth by turning PCs into bots. Be aggressive in your efforts to keep the desktops on your network clean. 

9: Use QoS to reserve bandwidth

QoS stands for quality of service. It is a bandwidth reservation mechanism that was first introduced in Windows 2000, and it’s still around today. If you have applications that require a specific amount of bandwidth (such as a video conferencing application), you can configure QoS to reserve the required bandwidth for that application. The bandwidth reservation is in effect only when the application is actively being used. At other times, the bandwidth that is reserved for the application is available for other uses.

10: Make sure you’re getting the bandwidth you’re paying for

A lot of factors affect Internet bandwidth, so you can’t expect to connect to every Web site at your connection’s maximum speed. Even so, your Internet connection should deliver performance that is reasonably close to what you are paying for. I haven’t ever seen a situation in which an ISP intentionally gave someone a slower connection than they were paying for, but I have seen plenty of situations in which a connection was shared between multiple subscribers. In the case of a shared connection, a neighbor’s online activity can directly affect your available bandwidth. If your Internet connection isn’t as fast as it should be, talk to your ISP and find out if your connection is shared. You might pay a bit more for a non-shared connection, but the extra cost may be worth it.