Software Engineer

 

I'm highly accomplished and skilled computer scientist with extensive knowledge of programming and system administration in Linux and Unix environment.

 

Feel free to check out my work or view my resume. I am currently available for hire, so if I sound fit for your next project, don’t hesitate to contact me!

I’m a social person. Or at least that’s what I keep telling myself. Either way, you can find me at the following places:

resume
PROFILE:
 
 

To obtain a challenging full time position in the field of Computer Science and Software Engineering. I'm highly accomplished, skilled and knowledgeable computer scientist with extensive knowledge of programming and system administration. Enjoys sharing knowledge and encouraging development of others to achieve specific goals.

EDUCATION:
2008–2012
Bachelor of Art in Computer Science
The City University of New York - Hunter College

Minor: Mathematics

EXPERIENCE:
11/12 - Current
Independent Contractor

• Consult small business users with various technical challenges.
• Software installations, network troubleshooting and configurations.
• Installing, troubleshooting and configuring various operating systems- Debian/Ubuntu, Red Hat/CentOS, ArchLinux, FreeBSD, MacOS, Windows.
• Hardware repairs, upgrades and new system builds.
• Website design, management, and instruction to employees on how to create, publish and maintain their new site.

4/09 - 11/12
Linux/Unix Systems Administrator
New York Internet Company, New York

• Experience in support of Linux, Unix, Mac OS X, and Windows servers environment. HelpDesk ticketing system(s) experience.
• Backup recovery, and synchronize software to tape systems and RAID configuration solutions (R1Soft, etc).
• Monitoring solutions such as Zabbix, Nagios, Puppet, Monit, etc.
• Experience in networking technologies configure and troubleshoot networks (firewalls, routers, DNS, NAT, DHCP, TCP/IP, VPN, etc).
• Design, install, configure and implementation of virtual environments using VMware, Data Recovery, VMware Site Recovery Manager within vSphere environments.
• Experience with HTML, CSS, Apache and MySQL in a UNIX environment.
• Experienced in Data Center environment, expert in hardware repair/diagnosis, and able to build servers/desktops.

1/11 – 3/12
Web Developer/Consultant
Feshirt, Inc., New York

• Web Design Specialist webmaster for all aspects of Feshirt's web site.
• Access database implementation, dynamic PHP applications, image optimization, HTML and CSS programming, UI, and template creation.
• Setting up and maintaining hosting accounts for all users.
• Set up the online shopping cart, and online payment module through PayPal.

SKILLS:
C
Java
C++
Objective C
STL
Boost
CSS
HTML5
XML
JavaScript
Unix/Linux
Debian
Red Hat/CentOS
Arch
FreeBSD
MacOS X
Windows
MySQL
Access
DB2
gcc
g++
git
firewalls(iptables/ipfw/pf/ipf)
Apache/Lighttpd
bash/shell script
TCP/IP
UDP
HTTP
FTP
XenServer
Vmware
VirtualBox
Eclipse
NetBeans
Qt Creator
Xcode
contact
Contact info
   
 

 

portfolio
Snippets of code are available for download on the bottom on the page.
 
Nov 8, 2012 C/C++

blogpost2

 

Readers–writer lock
In computer science, a readers-writer or shared-exclusive lock is a synchronization primitive that solves one of the readers-writers problems. A readers-writer lock is like a mutex, in that it controls access to a shared resource, allowing concurrent access to multiple threads for reading but restricting access to a single thread for writes (or other changes) to the resource. A common use might be to control access to a data structure in memory that can't be updated atomically and isn't valid (and shouldn't be read by another thread) until the update is complete. A lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy.

 

 
Multithread Programming using C/C++(POSIX pthreads)
Nov 8, 2012 C/C++

blogpost2

Simultaneous multithreading (SMT) is a technique for improving the overall efficiency of superscalar CPUs with hardware multithreading. SMT permits multiple independent threads of execution to better utilize the resources provided by modern processor architectures. In simultaneous multithreading, instructions from more than one thread can be executing in any given pipeline stage at a time. This is done without great changes to the basic processor architecture: the main additions needed are the ability to fetch instructions from multiple threads in a cycle, and a larger register file to hold data from multiple threads. Because the technique is really an efficiency solution and there is inevitable increased conflict on shared resources, measuring or agreeing on the effectiveness of the solution can be difficult. However, measured energy efficiency of SMT with parallel native and managed workloads on historical 130 nm to 32 nm Intel SMT (Hyper-Threading) implementations found that in 45 nm and 32 nm implementations, SMT is extremely energy efficient, even with inorder Atom processors [ASPLOS'11]. In modern systems, SMT effectively exploits concurrency with very little additional dynamic power.

 
Hash table implementation using C/C++
Nov 8, 2012 C/C++

blogpost2

A hash table or hash map is a data structure that uses a hash function to map identifying values, known as keys, to associated values The hash function is used to transform the key into the index (the hash) of an array element (the slot or bucket) where the corresponding value is to be sought. Ideally, the hash function should map each possible key to a unique slot index, but this ideal is rarely achievable in practice . Instead, most hash table designs assume that hash collisions—different keys that map to the same hash value—will occur and must be accommodated in some way. In a well-dimensioned hash table, the average cost (number of instructions) for each lookup is independent of the number of elements stored in the table. Many hash table designs also allow arbitrary insertions and deletions of key-value pairs, at constant average cost per operation.

 
 
AVL Trees implementation using C/C++
Nov 8, 2012 C/C++

blogpost2

AVL tree is a self-balancing binary search tree, and it was the first such data structure to be invented. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. Lookup, insertion, and deletion all take O(log n) time in both the average and worst cases, where n is the number of nodes in the tree prior to the operation. Insertions and deletions may require the tree to be rebalanced by one or more tree rotations.

 
 
Embedded C/C++ programming with Arduino
Nov 8, 2012 C/C++

blogpost2

Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. This Google Code project is the home for the development of the Arduino platform.

  • • Uploading, importing and running sketches.
  • • Transmitting data through separate receiver and transmitter.
  • • Algorithm for tracking location using standart gps.
  • • Coding autonomous motors movements.

 

 
 
 
Web and UI Development
Nov 9, 2012 HTML5/CSS/PHP
 
  • • Web Design Specialist webmaster for all aspects of Feshirt's corporate web site(http://feshirt.com/).
  • • Access database implementation, dynamic PHP applications, image optimization, HTML programming, UI, and template creation.
  • • Setting up and maintaining hosting accounts for all users.
  • • Experience with HTML and CSS coding and troubleshooting.
  • • Set up the online shopping cart, and online payment module through PayPal.
download code -> Readers-Writer Lock | Multithread Programming | Hashing | AVL Trees |