5 Tips for Running a Successful Meeting

We've all experienced meetings that are a total waste of time.  Don't be that meeting organizer!  Instead, follow the tips below so you can conduct the most effective meetings possible:

  1. Determine the Desired Outcome.  Before even scheduling your meeting, know exactly what you want to accomplish.  For example, consider the answers to questions like: What is your objective?  Who needs to be there to accomplish that objective?  Which subjects need to be discussed?  Once you can answer these questions, you'll be ready to create your agenda.

  2. Create an Agenda.  Remember how we discussed those time-wasting meetings?  Chances are that they lacked an agenda or the organizer didn't stick to the agenda that was created.  Create your agenda and clearly specify how much time will be spent on each topic—this will help keep your meeting on track.

  3. Manage the Time.  If you've ever sat in a meeting with a wind bag, you know how important it is to manage time effectively.  Be very clear at the onset of your meeting that you intend to stick to the time frames listed on your agenda, and then follow through.  People are much quicker to come to a consensus when they have a set time frame to reach one.

  4. Ban Electronics.  If you're low man on the totem pole, you may not be able to enforce this.  However, if you're in a position to do so, go ahead and ban electronics from your meeting.  There are few things more frustrating than seeing people surf the Internet while you lead a meeting.

  5. Assign Responsibilities, Then Follow Up.  Before the meeting ends, you'll probably need to delegate specific tasks to move forward with your project.  Assign responsibilities and then send out a document summarizing the main takeaways and expectations from the meeting.  Make sure the memo includes assigned tasks, the names of the people responsible for completing those tasks, and the deadline for having those assignments completed.  This simple step will minimize any post-meeting confusion and ensure that your meeting was a productive one.

C++ Programming: Introduction to Parallelization

Today we are going to talk about something a little bit different: parallel programming.  Parallel programming is a paradigm which, in the recent years, has become extremely popular.  With the recent trends in Big Data (huge amounts of data collection), and our algorithms and programs getting more and more complicated, its becoming clear that we need to introduce parallelism - computation in which many calculations are carried out simultaneously - to our programs.  This, however, is no simple task.

Parallelization can be implemented in many different ways, and on many levels: bit-level, instruction level, data and task parallelism.  Also, a distinction can be made between hardware and software parallelism, but the goal is usually to utilize the possibilities of advanced hardware components: multi-core processors, graphics processors (particularly suitable for this purpose) etc.

From a theoretical aspect, one very important thing which has to be mentioned when talking about parallel computing is the Amdahl's law.  Amdahl's law states that the upper bound of performance improvement by using multiple processor cores always depends on the amount of serial code in the program - the portion of the code which cannot be parallelized.  Having said this, the next step would be to understand that not every program can be entirely parallelized.  In fact, writing parallel algorithms (or rewriting serial ones with the purpose of parallelization) is a demanding task for every programmer.  Arguably, it is more difficult than "regular" programming - since it introduces new concepts and new possibilities for error, such as the so-called race conditions.

Another thing that makes learning parallel programming difficult is the number of different models: shared memory, message passing, data parallelism, task parallelism... Discussing each of these models surpasses this article, but it is important to reach a consensus around a particular programming model, because that leads to different parallel computers being built with support for the model, thereby facilitating portability of software.  In this sense, programming models are referred to as bridges between hardware and software.

The basic idea of parallel computing refers to the construction of threads: a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system.  Parallelism is achieved when multiple threads are executed as parts of one process, sharing memory and other resources between themselves.  It is usually the programmer's responsibility to determine how many threads will be created and when, which resources they can access, what will be the task the thread should perform etc.  This is not always simple and straight-forward, since one must also make sure that the threads are working synchronously and not blocking each other.

There are many different programming constructs and tools to simplify writing parallel programs.  In the next article, we will talk about one of them, called OpenMP.  OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most platforms, processor architectures and operating systems.  It consists of a set of compiler directives, library routines and environment variables that influence run-time behavior.  OpenMP enables the programmer to easily parallelize blocks of code by simply adding special keywords without changing the actual serial code.  In the next article, we will see examples of using OpenMP in C++, and discuss if we've successfully improved the efficiency of our code.

5 Tips for Greater Job Satisfaction

Contrary to what you may currently believe, it is possible to enjoy your job more than you do today.  Read on to learn how you can experience greater happiness at work:

  1. Challenge Yourself.  One reason people grow to dislike their jobs is boredom.  To overcome a sense of monotony, think of ways that you can challenge yourself.  Can you take on a new project at work that you feel passionate about?  Can you get additional training on a new skill you'd like to learn?  Try to think outside-the-box to determine ways you can enjoy your work responsibilities more.

  2. Change Your Attitude.  Attitude has a huge impact on our overall job satisfaction.  Rather than allowing yourself to dwell on all of those things that you hate about your job, start thinking about those things you appreciate.  While it may sound overly simplistic, a positive mindset really can alter how you feel about your job as a whole.

  3. Don't Hang Out with Haters.  Chances are there are a group of cynical complainers at your workplace.  Maybe you're even one of them.  However, these people are unlikely to support you in your efforts to think more positively.  Try to avoid spending too much time with cynics and gravitate to people who have a better outlook.  As Forbes explains, “Spending time with colleagues who have a more balanced view can dramatically shift your emotional response to your job.”

  4. Take Regular Breaks.  When you feel yourself starting to get overwhelmed, take a short break.  Even 5 minutes outdoors or a quick trip to the coffee pot can be enough to recharge your energy and outlook.

  5. Avoid Multitasking.  It's tempting to try to do too many things at once.  However, research shows that multitasking slows down productivity and even lowers your IQ!  Instead, do one task at a time while minimizing distractions.  In the long run, not only will you get more done, but you'll also experience greater peace of mind.

Considering a For-Profit College? Read this First

In a competitive job market, you want to make sure your skills are in high demand.  For many people, this means pursuing a degree at a for-profit college.  But are for-profit colleges worth the investment?  In this post, we take a look at some things you want to consider before enrolling.

There are many reasons that for-profit colleges are appealing.  For one thing, they typically offer degrees to students in less time than it would take at a traditional 4-year college.  They also offer a huge degree of flexibility, allowing people to take classes online when it's most convenient.

However, the convenience of online classes can be one of for-profit colleges' greatest drawbacks.  Many students find that they miss learning in the traditional classroom environment, and as a result, find it more difficult to take their studies seriously.  Unfortunately, for-profit colleges are also expensive.  On average, they cost $13,935 per year, twice the typical cost of in-state non-profit colleges.

Perhaps worse still, for-profit college graduates are less likely to find jobs.  According to U.S. News & World Report, “Applicants with business bachelor's degrees from large online for-profit institutions are about 22 percent less likely to hear back from employers than applicants with similar degrees from nonselective public schools.”

For these reasons, it's important to do your homework if you're considering a for-profit college.  Research whether the college is accredited, the percentage of students who graduate, and what your post-graduate earning potential will be.  Prior to taking out a large student loan, make sure you understand the full costs involved i.e. exactly how many years have you committed to paying back $350/month?

Once you've done the research, you'll be better able to determine whether a for-profit college is right for you.  For students with unusual or demanding schedules, a for-profit education might be the perfect fit.  However, you'll want to make sure you know what to expect before signing those enrollment papers.  

Thought For The Day

“Till now it was believed that time and space existed by themselves...”

Hendrik Lorentz