ToDo.txt on the Web

While I was home over Thanksgiving break, I got an early graduation gift from my parents – a new 2.5 GHz i7 MacBook Pro. In the process of transferring all of my programs and documents to the new computer, I decided to look into some new programs to install, specifically a better way to keep track of my todo list. Recently, my todo list consisted of a 1/4 piece of printer paper that I would write out each Sunday when starting my work for the week, and hope that I would still be able to find by the middle of the week. I remembered reading about todo.txt a while back, and looked into it. The basic premise behind the program is a simple, text-based todo list that is updatable via the terminal and a few basic shell script commands. I set it up on my new MBP, and was immediately impressed by the program. I was talking to my friend Alex about the program, and started thinking about how convenient it would be to have a web based todo list. I looked into a few web apps that already existed, but quickly found a web-wrapper for todo.txt. It was written in PHP, and wrapped the shell commands in a convenient web interface. After getting the basic web functionality working, I began looking into ways to synchronize the local todo list on my computer with the copy stored on my server. I was originally going to try and use rsync, but found out it was a one way algorithm. Upon further searching, I came across unison – it operates using the same concepts as rsync, but allows for two-way syncing. The next hurdle was getting my hands on the appropriate binaries for each operating system (OS X for the MBP, and Linux, specifically CentOS, for my server) and making sure that they were the same version. Unison only allows syncing between identical versions of the binary – if you have 2.44 installed on your local system, 2.44 must also be installed on the server; there is no backward compatibility. The OS X binary was easy; I fired up Terminal and issued the appropriate commands and was up and running. For my server, I set up a CentOS virtualization to create the binary and then copied it over ssh to the appropriate location on my server. After everything was set up, I began tweaking a preference file that would automatically and silently handle the synchronization, and be fired from Geektool every couple of minutes. Additionally, by using Geektool to handle the synchronization between the server and the local copy, displaying the output on my desktop was also easily done. By handling the entire system the way that I have, I can update my todo list from any of my computers, or from the web interface, and always ensure that the latest copy will be downloaded and displayed locally.

Check out the screenshots below, and check back in the next few weeks – I’m hoping to clean up some of my modifications to the web-wrapper and repackage it for others to use. I only made a few changes with regard to security and formatting the output, but I think they’ll be helpful so that someone else doesn’t have to worry about. Any questions, leave a comment below.

GeekTool:

ToDo.txt Embedded on Desktop via Geektool


Terminal:

ToDo.txt in Terminal


Web:

ToDo.txt via the Web

Update [1/6/2012]: It seems that the organization behind ToDo.txt realized that they needed official iOS support and recently released their own native client. You can check it out here. I havent bought it yet (the $1.99 seems a little steep for what its actually doing), but from reading the reviews of it, you need to keep your todo file in your dropbox; not as clean a solution as I was hoping they would come out with, but probably offers a little more functionality than my web interface.

Posted in: GeekTool, Personal, Programming, Software, Web Design by Marc Budofsky 1 Comment

New Google Bar

The other day, one of my friend’s showed me the blog he had been working on for one of his classes during the past semester. One of the posts explained how to enable the new Google Bar, but was strictly tailored to Google Chrome. After a quick search, I found the necessary plugin for Firefox to achieve the same functionality:

1. Download and install Cookies Manager+ for Firefox. Restart to complete the installation.
2. Open ‘Cookies Manager+’ and enter ‘PREF’ in the search bar.
3. Under sites, find the cookie for ‘google.com’ – the name of the cookie should be ‘PREF’
4. Double click the cookie to edit it. Change the ‘Content’ to ‘ID=03fd476a699d6487:U=88e8716486ff1e5d:FF=0:LD=en:CR=2:TM=1322688084:LM=1322688085:S=McEsyvcXKMiVfGds’
5. Reload any Google site (Gmail/Calendar/+/etc) and you should have the new Google Bar enabled.

Its a nice change from the toolbar approach Google was using before – everything is contained in a single drop down menu from the Google logo. Make sure to check out my friends blog (TheTechUpload.com) for some more interesting tricks and hacks.

Posted in: Miscellaneous, Tutorial by Marc Budofsky No Comments , , ,

MyBroadway

In order to finish my MBA with a concentration in Management Information Systems (MIS), I’m required to take Information Systems. The general concept behind the class is to understand the necessary steps that go into the analysis and design of IT systems. For the second half of the semester, we’ve focused on creating and analyzing Data Flow Diagrams (DFDs) and Entity-Relationship Diagrams (ERDs). Throughout the entire semester, we’ve been working in groups to do analysis of the fictitious MyBroadway Video Rental Company. Each case builds on the previous one – we started looking at a broad overview of the system, then moved into creating DFDs and ERDs to model and mockup a finished product. Instead of having a traditional final for the class, we were given the option to do a final project and presentation. The final project was to implement the databases we designed during the ERD analysis and create a working prototype. My professor gave us two options for creating the database: (1) use Microsoft Access to design the tables and just create basic user interface to test them or (2) use PHP/MySQL to create a functional website to demonstrate how the product would work for both customers and employees. I immediately gravitated towards the PHP option and began coding.

I started by designing a simple layout that was aesthetically pleasing, and added in the basic functionality: register a new account and login to the system. Given that it was supposed to be a movie rental portal, I next had to figure out where to get a decent sized movie library that I could store in my database. After some thinking and googling, I decided to use IMDBs Top 250 as a starting point. I originally thought of writing a scraper from scratch to obtain the relevant information, but quickly found out that IMDB API was freely available. However, in order to use IMDB API, I needed to have the movie list stored somewhere; either in the database or as a text file. A little more googling led me to ScraperWiki, where I found a scraper that was already written to dump the Top 250 into a .CSV file. After uploading the .CSV file to my server, I put together a quick PHP script to parse it out and save the IMDB IDs into a table. Now I was in business – another quick script to run the IDs through IMDB API and I had a working movie database. I also ended up saving the movie posters from IMDB locally on my server to avoid hotlinking them every time the page was loaded. After getting the movies all put together, I started building out the rest of the functionality: rent/buy movies, checkout, request a new title, view/return rentals, view purchases, and view transaction history. To reduce the amount of reloads the user would have when navigating the site, I ended up linking almost all of the operations to AJAX requests that queried PHP scripts and updated the DOM using jQuery.

Some of the other fun features that stand include:

  • Facebook/Google+ like notifications for when items are in the cart or rentals are overdue.
  • A ‘Quick Cart’ dropdown that appears when the notification for the Shopping Cart is clicked.
  • A few CSS3 hacks to create a wrapping effect around the body of the page.
  • Embedded Trailers when viewing the details of a single movie.
  • A scrolling interface for the movies page that allows the user to view all of the movies in the catalog without reloading the page
  • “Employee” reviews of movies, with a 5-star rating system.
  • The ability to request a new movie, or vote for a movie requested by another customer.
  • Similar Movies (when on a Movie detail page) and Suggestions calculated on the fly based off of the genre of the current movie or previous transactions, respectively.

I’m sure I left a few things out – I’ve been working on the site for about 3 weeks now, so I know what I’m expecting to see at this point. Overall, it was a fun project to work on, and it allowed me to test out some new features that I probably wouldn’t have had the time to on a real production site. Anyway, you can check out the working prototype here – just register an account and start playing around with it. Any questions or comments, leave me a post below.

Damien Walters Showreel

Completely unrelated to programming, but I came across this the other night and proceeded to watch every video on his YouTube channel. Damien Walters is a gymnast from the UK that’s helped pioneer some of the new tricks in freerunning – some of the stuff is pretty crazy. Kind of makes me wish my parents had enrolled me in gymnastics when I was younger so I could do this stuff now. Anyway, check out the video below. I’ll be writing up a post about a new website I built for one of my classes in the next couple of weeks, so check back for that – you can play around with the site here if you want to see it out beforehand.

Posted in: Miscellaneous by Marc Budofsky No Comments

Purely Functional Programming

Registration for the Spring semester opens tomorrow, so I’ve been trying to figure out what classes I want/need to take to finish my MBA on time. After looking over the Management/MIS classes I need, I realized I have a little extra room in my schedule and decided, given that I’m in the process of applying to MS Computer Science Programs, that it might be beneficial to try and fit in a CS or Engineering class. I’ve always been interested in taking Algorithms, especially after working on Your University Maps and implementing Dijkstra’s Algorithm, so I headed over to the CS department to talk to the director. I knew it was a long shot – even as an CoE, I was never allowed to take CS classes beyond the required ones, but thought if I explained my intentions of pursuing a MS in CS, I might be able to talk my way into the class. Long story short, the head of the CS department hadn’t changed her opinion of allowing non-CS students into CS classes before the start of the semester, and she said no. However, in the process of trying to work my way into the class, I asked if there were any languages that I should look into on the off chance there is an open spot come next semester, and she mentioned Haskell. I originally thought she said Pascal, but after glancing at the bookshelf in her office, realized my mistake. I thanked her for meeting with me and went on my way.

Once I got back to my room, I decided to look into Haskell – I always enjoy playing with new languages, even if its just to brush the surface. After reading a little about Haskell, I came to the conclusion that its unlike any language I’ve ever programmed in before. Whereas Java/C++/C are imperative languages with control structures and a defined structure, Haskell is a functional language. The concept itself is a very interesting one – rather than modifying variables and data as the program executes, Haskell focuses on the functions. From one of the tutorials off HaskellWiki, “In purely functional programming you don’t tell the computer what to do as such but rather you tell it what stuff is.”

I’ll do some write-ups as I start to mess around with the language more – I’m excited to start working in a new programming paradigm.

Posted in: Programming by Marc Budofsky No Comments , ,

CMS, AJAX, and Custom Analytics

My boss asked me a few weeks ago to develop a site for one of the professors at Binghamton University. The site was to just be a redesign for some content the professor already had hosted, and needed to be clean and simple to use. After talking to my boss, we decided on a basic layout, with a CMS to easily change the content using CKEditor.

I started by setting up a basic framework for the site, throwing some dummy text in to help me visualize everything. After getting the look the way I wanted it, I decided to switch gears over to the CMS implementation to get that squared away. Once I had the ability to add new pages, including whether they should be in the menu as a top level or a submenu, and could add the appropriate text, I threw a couple of pages into the database and went to check the front end.

At first I was going to use some .htaccess rewrites to make the URL look clean, and just pass the page names via the $_GET parameter – I’ve done this on a couple of sites already, and it helps keep a clean layout. After looking at the content that was actually being loaded, I realized that I wanted to take this site a step further. Rather than reloading the page each time a link was clicked, I decided to throw together a small PHP script to query the database, and use Javascript and AJAX to dynamically alter the page – I wanted to make it so that the user never left the ‘index.php’ page. After some testing, and re-testing, I finally had it working, and even got it to display a 404 error if the page wasn’t found in the database. I even tried to add a loading image, to be displayed while the database was being queried, but the whole process was firing so fast that it never got a chance to show up.

The final step was to add some analytics – I usually immediately turn to Google for this, but given that the site never left the index, I realized that this wouldn’t provide accurate tracking. After some quick searching, I found a tutorial on how to make a basic analytics tracker. I ended up modifying it slightly to fit into the AJAX implementation, but ended up getting it to save an entry each time a page was loaded from the database.

I’m putting the finishing touches on the site as I’m writing this, but expect a more in-depth tutorial in the coming weeks – I plan on using the entire framework from this site as my starting point for more projects in the future. To check out the site, head over here to test it out.

Modifying Banner via the DOM

I recently decided to redo my resume in LaTex, and the template/tutorial I was following linked their GPA to a copy of their unofficial transcript. I thought this was a good idea, and decided to follow suit. I headed over to BUBrain (Binghamton University’s student backend) and printed a copy of my unofficial transcript to a PDF. In the process, I removed the header and navigation from the transcript to provide it with an overall cleaner look, leaving only the essential information. However, the process of removing the header also removed the only reference to my name on the transcript. I found this a little odd and sent an email to the helpdesk, inquiring how I would go about requesting a change to the system to include a students name in the body of the transcript. They proceeded to forward my email to the registrar, who informed me that there were no plans to correct my ‘problem’; the name was placed where it was “to make it more obvious that this was an unofficial transcript”. I was told the only way to obtain a copy of a transcript with my name in a clear location would be to purchase an official transcript.

Rather than continue arguing with the registrar, I decided to work up a quick hack that would provide me with the end result I desired. I fired up Chrome and opened the developer console. I originally tried using some jQuery syntax, but quickly realized that Banner does not include jQuery by default. After some quick googling, I found two StackOverflow threads that addressed my needs: 1. Include jQuery via the console, and 2. Add a row to a specific location in a table. After some quick testing, I put together what was needed to add the student name under the heading of ‘Student Information’, placing it together with ‘Birth Date’ and ‘Student Type’.

First, you must add jQuery:

?View Code JAVASCRIPT
1
2
3
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);

Then add the data:

?View Code JAVASCRIPT
1
$('.datadisplaytable > tbody > tr').eq(2).after('<TR><TH COLSPAN="2" CLASS="ddlabel" scope="row" >Student Name:</TH><TD COLSPAN="10" CLASS="dddefault">[NAME GOES HERE]</TD></TR>');

The code simply adds jQuery into the DOM, then finds the table (.datadisplaytable in my case), moves into the body of the table, then the rows, finds the 3rd row (starting from 0, so row 2 in this case) and appends the provided html after this row. Following the format of the original markup, I add an extra row with the appropriate information.

Finally, I had to enter the commands in Firebug, as Firefox was the only browser that I tested this on that placed a page break between the content I wanted to remove and the information that I actually needed. The end result: my unofficial transcript, with my name in an easily identifiable location, minus all of the unnecessary markup added to it by the system.

This should theoretically work for any school utilizing the Banner system for their student portal/unofficial transcripts. Any questions, leave a comment.

Operating Systems Analysis: OS X | Windows | Linux

As part of my MBA program, I’m required to take Written and Oral Communications. One of our assignments was to give a 10 minute persuasive speech on a topic of our choice. Given that I have an affinity towards technology, as well as being a computer engineer, I opted to write my speech on something in the technology field. After discussing the potential topics with my professor, I decided to analyze OS X, Windows and Ubuntu Linux, and persuade my class that OS X is the dominant and best operating system on the market.

Although this was given as a speech, I compiled the content in a document to prepare myself, and figured I would share it on here. Additionally, to aid with the delivery of the speech, I created a powerpoint presentation. The speech first looks at the growth of OS X’s market share from 2005 to 2011, and then analyzes several key components of the three operating systems and the company’s behind them.

In reality, its probably closer to a 13-15 minute speech with all of the components. For the sake of time during the actual presentation, due to the audience, the sections on security and underlying code were removed.

Any comments, questions, or suggestions, leave a message below – I’d be more than happy to discuss my position on this topic further with anyone who has a different opinion.

Downloads: Speech | Presentation

OS X | Windows | Linux

Marc Budofsky
Binghamton University, MGMT 516

Many factors affect a user’s decision in choosing what kind of computer to buy. One of the largest deciding factors for many users is the Operating System the computer will be running.

In recent years, Apple OS X’s ease of use and clean layout, combined with the visual appeal of the hardware and integration with Apple’s other products, has led to an increase in OS X’s market share and popularity, ultimately separating it from Windows and Linux as the best operating system available.

In 2005, OS X had a market share of only 3.05%. During this time, Apple had both the iBook and PowerBook on the market, running PowerPC processors and OS X 10.4 “Tiger”. The following year, Apple transitioned from PowerPC to Intel CPUs, and introduced the Macbook and Macbook Pro. Since the Apple-Intel Transition, Apple has released three updated versions of OS X, each offering additional features, functionality and speed-ups. Both the transition to Intel CPUs and the regular updates to OS X have helped to increase notebook sales, with OS X market share reaching 8.13% this year, and Apple recording record global market shares this past September. While this seems like a small increase, one must remember that the market share is based on all computers currently in use; Windows systems that have been in use since 2005 will still be reflected in the 2011 market share, skewing the data slightly.

In the process of determining which Operating System is best, an analysis of certain components of the OS and developer must be conducted. These components range from visual appeal and features that the user will interact with to key components that dictate how the OS will behave.

One of the most important components of the OS that the user will interact with is the pure aesthetics of the system; strictly how the screen looks and displays content to allow the user to quickly and easily perform their desired task.

OS X’s main interaction for users is a dock system; applications can be placed in the dock to allow quick execution, with all open applications residing in the dock as well. Additionally, the ability to make use of multiple desktops allows users to increase their productivity under OS X.

Windows uses a task bar as the main point of user interaction. In Windows 7, users can ‘pin’ applications to this task bar, similar to the ability of placing applications in the OS X dock, while all running applications are showed here as well. Windows 7 also makes use of a glass effect, allowing the user to view windows that are hidden due to other windows lying on top of them.
Ubuntu 11.04 allows users to customize the user interface. By default, it makes use of a task bar that is similar to that of Windows; the difference lies in that only running programs are displayed in the task bar. However, users have the ability to add a dock and multiple desktops by changing settings and through Compiz, a 3D effects application that is installed with the system.

Users typically look at the features that the OS will offer them after finding the look that most appeals to them. While there are many features that are common to all three operating systems, there are several that help to set them apart.

OS X incorporates many features that aim to further user productivity and ensure system stability. Some of the most notable features include Time Machine, an automated backup system that helps recover the system if a catastrophic error occurs, Versions and Autosave, a new set of features in Lion that allows a user to view revisions of their files and take portions from previous copies as they see necessary, Resume, which automatically reloads any applications and files that were previously opened if the system must be restarted, iCloud, a new service that allows a user to synchronize up to 5 GB of data across multiple computers, and Full Screen Applications, allowing the user to utilize the entire viewing area to help minimize distractions.

Windows too has features that are meant to increase productivity; Taskbar Preview allows the user to hover over a minimized window to view the contents, Libraries help organize folders and files that share similar content and allow the user one-click access, and Snap Windows automatically sizes and places windows based on where the user drags the window.

Ubuntu’s features are slightly different than that of the other two operating systems. Due to the open source nature of Ubuntu, its main features focus around its ability to allow the user to tweak and customize the system to their liking. By default, Ubuntu utilizes the GNOME desktop manager, but can be changed to either KDE or Xcfe. Additionally, Ubuntu is the only of the three to offer a version customized strictly for the netbook architecture, taking into account the small screen size and limited resources of the system.

Once a user has determined the features that are important to them, they will usually begin to install their applications on the computer.

OS X offers the simplest installation method out of the three; applications are typically installed via “drag and drop”, with no restarts required to finish the process. OS X also utilizes an App Store that allows users to purchase programs without having to leave their computer. For users that require programs that are designed for Windows, an emulation layer can be installed to allow these programs to run within OS X.

The installation process in Windows varies drastically from that of OS X. All programs are installed through dialogs, often requiring several clicks to proceed through the menus, and many times requiring a system restart to complete the installation. This becomes tedious for a user that wishes to install a large number of programs at once, as they will be waiting for the system to shut down and restart for extended periods of time.

In Ubuntu, there are two ways by which a user can install applications – building them via source code in terminal or through the Synaptic Package Manager. The Synaptic Package Manager operates in a fashion similar to the Mac App Store, while building applications from source requires a user to enter specific commands in the terminal and ensure that the necessary dependencies are installed on their system. Much like OS X, Ubuntu also allows Windows programs to be run by installing an emulation layer.

In addition to the components of the operating system that the user interacts with, there are many background tasks and functions that the user may never see, but play an important part in the overall system. The security and stability of the operating system is an important factor that must be considered during operation.

Due to its relatively small market share compared to Windows, OS X faces minimal virus threats. The few incidents that have been reported typically stem from users trying to obtain software through illegal means, and, for the most part, only affect a small portion of users. OS X does face several security issues due to the nature of how the system is set up, specifically related to User and Hardware-level security. By default, OS X creates profiles with administrative privileges; if a hacker compromises an administrative profile, the entire system is at their disposal. This can be remedied by changing the accounts to “user”-level, with a single administrative account being present and only used when needed. Security issues with regards to hardware become apparent when the system is booted off of an OS X install disc; if the system has no firmware password, a hacker can make changes to administrative passwords or partitions and disks.

Windows has notoriously been a target for viruses due to its market share. For a hacker, there is much more recognition in writing a program for Windows, as it has the potential of reaching more users. Due to this, Windows is a very virus prone operating system. While changes in applications and systems permissions have helped to reduce the number of viruses, Windows is still the leader in the number of infections. Another security issue was inadvertently introduced with Windows Vista. Microsoft implemented “User Account Control” as a way to limit programs from gaining administrative, or “superuser”, privileges without first being authorized by the user. While this seemed like a logical way to reduce administrative processes, the UAC was too intrusive and slowed down various tasks, including software installation. Because of this, many users disabled the UAC entirely, allowing any process to gain administrative privileges.

Linux has an even smaller market share than OS X, and, due to this, very few viruses are written to infect Linux systems. As such, Ubuntu has had minimal virus threats in its history. Additionally, due to the secure nature in which Ubuntu was created, it is often used to clean Windows systems that have been infected by a virus.

Most users are content knowing that their system works, not how it works. However, the underlying code of the operating system is important in determining how various tasks and processes will be handled. Three kernel architectures are currently used in operating systems: monolithic kernels, microkernels, and hybrid kernels. The different designs specify how the software and hardware will interact, and which parts of the operating system will be responsible for which tasks.

OS X utilizes a hybrid kernel based on the mach microkernel from Unix/BSD. A hybrid kernel allows the OS to split tasks between kernel space and user space, reducing the time it takes to perform certain operations. It is closed source with open source components due to the underlying Unix core. By implementing the Unix core, OS X benefits from many of the core functionality present in Unix and Linux systems.

Windows 7 also uses a hybrid kernel based on the NT kernel, which was developed by Microsoft for the Windows NT operating system. As such, the NT kernel is proprietary and only utilized by Microsoft in their operating systems.

Ubuntu makes use of a monolithic kernel. Unlike OS X and Windows 7, the monolithic kernel utilized by Ubuntu maintains all operating system functions in kernel space. The Linux Kernel is completely open source, and is used in the majority of Linux distributions.

One of the fastest growing uses of the computer is for software development; programming has contributed a large part to the fast-paced evolution of computing.

OS X can support most languages natively due to the inclusion of Terminal from the underlying Unix core. Terminal allows users to interact with the system via sets of specific commands, ultimately providing the necessary tools to compile and execute custom code.

Windows 7 has no out of the box support for any programming languages. One must install an additional software package to use Windows as a development environment. Two of the most common programs are Cygwin, a terminal clone, and Visual Studio, an integrated development environment.

Ubuntu, like OS X, has Terminal, and thus supports the majority of modern languages without any additional software.

Another factor that is important in determining which operating system is best is to look at the integration of the company producing the software. A more integrated company can help ensure better compatibility and a better user experience.

Apple is a completely integrated company. Looking beyond OS X, they design the hardware and software for all of their products. By having a hands-on approach through every step of the product development cycle, Apple is able to ensure the highest level of system compatibility throughout all of their product offerings. This applies to Apple’s desktop/notebook computers and OS X, as well as their iPhone/iPad and iOS.

Windows 7 is developed by Microsoft, and implemented by third party companies who develop the hardware. This approach will work as long as the hardware companies follow the strict requirements put in place by Microsoft. If they deviate, it could result in a poor user experience as the system will not be compatible. One benefit from this approach is that a user has the opportunity to design and build their own system.

Ubuntu is maintained by the Ubuntu Foundation, and licensed under the GNU General Public License. Although uncommon, it can sometimes be found installed by third party hardware manufacturers. Typically it is installed as an alternative OS to what comes on the system, or is added as a secondary OS to supplement the original OS.

The final factor that must be analyzed is the support that the developer offers for the OS.

Due to Apple’s integration approach, OS X has the best support. When a problem arises, the user simply has to make an appointment at their local Apple store and bring their computer in to the Genius Bar. Regardless of where the product was purchased, Apple will provide support as long as there is a valid warranty on the device. If a user desires additional support, they can purchase AppleCare, which provides full coverage, minus user error, for three years. There is also an active online community that operates via forums that can provide support for smaller issues.

Support for a Windows system can be more difficult to obtain. Due to the nature in which Windows computers can be purchased, a user may not know where to go to receive the appropriate help. Often times, one is able to call the manufacturer, but sometimes it is necessary to return to the seller. The worst case scenario occurs when the manufacturer and seller contradict each other, and inform the user that they need to obtain support from the other party. As with OS X, there is also an online community that operates in a similar fashion to offer help.

Ubuntu releases are generally supported for a six month cycle after release, due to the six month release cycle on updates. Basic support can be found on Ubuntu’s website, while the majority of information is located in various user forums and wikis.

Ultimately, there are many factors that need to be assessed to determine which operating system is truly best. While Windows and Ubuntu are strong performers, they fall short in several key areas and end up leaving the user wanting more from the system. OS X combines the key factors into a finely crafted package that provides the necessary tools for the most basic user up to the hardcore enthusiast. As computing continues to evolve, OS X will continue to eat away at the market share of Windows and further itself as the dominant OS.

Posted in: Binghamton University, Linux, OS X, Personal, Windows by Marc Budofsky 2 Comments

Thank You Box.net!

For anyone using an iPhone, download Box.net immediately on your phone and make an account. They’re running a new promotion and are offering 50 GB accounts for free, for life, with no strings attached. Easily the best cloud storage promotion I’ve ever seen.

20111013-191029.jpg

Posted in: iPhone Update, Miscellaneous by Marc Budofsky No Comments

Shareaholic SexyBookmarks Plugin

In an effort to make my blog more social networking friendly, I decided to install SexyBookmarks by Shareaholic to easily allow users to share any of my posts on some of the more popular sites – Facbeook, Twitter, StumbleUpon, LinkedIn, Reddit, Del.icio.us and via Email. Its an extremely easy plugin to configure, and hopefully some more traffic will be generated by using it. Anyway, just wanted to post about the addition of this plugin quickly. Check back in the coming weeks for updates on my projects and life – I know I’ve been making a lot of posts lately, but that might slow down a little as classes start to reach midterm time and the work starts to build up more.

Posted in: Miscellaneous by Marc Budofsky No Comments