DANIEL VIK
926 Genter Street
La Jolla, CA 92037
(858) 454-2085
www.vik.cc
daniel@vik.cc

SKILLS SUMMARY
Languages:
C, C++, Java, HTML, MatLab, Tcl, and assembler.
Operating systems: 
Windows, Linux, UNIX, OSE, Windows CE, VxWorks, and Epoc.
Development tools: 
Microsoft Visual Studio, Ethereal, Code Composer Studio, gdb, MetroWerks, Microsoft Project, ClearCase, Perfoce.
Targets:
Intel XScale, Z80, Texas Instrument 320c5x and 320c6x, Motorola 8101 and 8102, Lucent dsp16k, and Star core DSPs, Power PC, and Strong Arm.
Communication:
802.11a/b/g, TCP/IP, 802.1x, WPA, WPA2, 802.11i
Other:
Embedded system component, and driver design. Network stacks, 802.11a/b/g driver development and networking. Network security. Design of high performance and memory efficient algorithms. Computer emulation.

EDUCATION
Uppsala University (www.uu.se)
Uppsala, Sweden
9/92-6/00

Master of Science in Engineering
(Major in Technology)

Infantery 20
Umea, Sweden
6/91-5/92

Mandatory military service. Corporal and medic

PROFESSIONAL EXPERIENCE
Cardinal Health Inc. (www.cardinal.com)
Principal Software Engineer
San Diego, CA
1/03-Present

Software lead for all wireless development. Responsible for the network solution in the infusion pumps, including drivers, network stack, security and application protocols.

Software architect for a generic configuration and management component that supports multiple ethernet and 802.11 interfaces that can be loaded/unloaded and configured dynamically. Utilizes XML and XPath for flexible configuration and scalability.

Architected a discovery and connection protocol that allow the hospital server to discover and connect to infusion pumps as they become available. The protocol ensures reliable and secure transfer of patient sensitive information.

Designed and implemented a wireless ethernet driver for a Connexant 802.11a/b/g compact flash card for the OSE operating system.

Designed and implemented a wireless ethernet driver with WPA/WPA2 support for an Ambicom 802.11b/g compact flash card for the OSE operating system.

Redesigned and implemented a wireless ethernet driver with WPA support for an Spectrum 802.11b compact flash card which increased performance, maintainability and feature set.

Designed and implemented barcoding support in the infusion pumps that allows nurses to use a bar code scanner to to read patient and drug information instead of manually entering it.

Designed and implemented the software for an expansion board that provides wireless communication capabilities to the Medley™ Medication Saftey System infusion pump. The software is written in C++ and built for Windows CE.

Developed a generic OSE based platform with flash file system, protocol stacks, wired and wireless communication capabilities for an XScale equippted board. The platform is implemented in C++.

Designed an operating system independent C++ class interface that encapsulates the underlying operating system and system services.

Interviewed 20+ potential employee candidates for different departments in the company.

Ose Systems Inc. (www.ose.com)
Senior Design Engineer
San Diego, CA
1/01-12/02

Team leader for the software development team in San Diego, containing eight developers. Responsible for seeing to that the team competence is used in best way in order to achieve the demands from customer. Managing the resource allocation plan. Consultative to the Line Manager in salary settings, budget planning.

Member of the Change Control Board. The board members are responsible for the source code development and accept or reject all software changes in the OSE for DSP product line.

Component responsibility of the Heap and Timeout Server in the OSE real-time operating system kernel. This includes decisions on changes in the products and leading teams of up to four people when the products are ported to new platforms.

Re-designed the algorithm for the Timeout Server to give applications timer events with very high resolution and to provide an easy portable driver interface.

Implemented timer drivers for the Timeout Server for Windows, Solaris, and Texas Instrument 320c5x and 320c6x DSP's.

Designed and developed debugging tools that allows third party debugger vendors to implement OSE kernel awareness into their debuggers. The tools are implemented in C for Windows and Solaris and parses data from a DSP in order to present information about the real-time kernel to the debugger.

Handled contacts and attended meetings with third party debugger vendors regarding design issues of the kernel aware debugging tool.

Re-designed the CPU profiling algorithm to give better CPU load measurements and less overhead when sending CPU load data from the target DSP to the host GUI. Implemented in C.

Implemented C++ support package for the OSE windows soft kernel.

Enea Data AB (www.enea.se)
Embedded Software Consultant
Stockholm, Sweden
7/97-12/00

Designed and implemented a robust and fault tolerant flash file system for the Epoc operating system, including drivers for three customer targets; Strong Arm and Power PC processors with AMD and Intel flash devices. (Stockholm, London, Raleigh NC)

Expert advisor in a customer flash file system driver development project. (Tampere, Finland)

Ported a safety critical communications application from the VRTX operating system to OSE on a PowerPC based platform. (Irvine CA)

Wrote a requirement and design specification for a delayed 100Mbit router for the Swedish Stock Exchange, which give worldwide users real time, instantaneous access to stock information. The specifications contained both algorithms and hardware and software proposals.

Represented OSE in a real time Java demo team. The goal was to design two robots that controlled by a Java program, moved blocks to each other. The demo has been shown at the Embedded Systems Conference. (San Diego, CA)

Migrated a real-time Java virtual machine (personal Java) to the OSE soft kernel for Windows. The project included Java vs. Windows thread handling, JNI and window management.

Created a fast, deterministic and non-intrusive heap algorithm for OSE. All operations have bounded execution time. The heap was implemented in C and built on Windows and Solaris for Texas Instrument 320c5x and 320c6x DSP's, Motorola Star-pro DSP, and Lucent dsp16k DSP.

Developed a test application for cell phone displays where a part of the Windows desktop will be available on the cell phone display for clicking as if it was the host Windows computer. A Windows GUI sends image data to an Arm processor and receives user input using the parallel port.

Wrote a C-coding guideline for my division of the company.

NorNet AB (www.kablageproduktion.com)
Technician
Norberg, Sweden
9/94-7/95

Produced electric systems for industrial robots.

Created safety equipment for machines used in production of the electric systems.

PERSONAL PROJECTS
International Obfuscated C Code Contest (www.ioccc.org)

2004 Winner - Best X11 Game. A feature rich X11 race game, extremely optimized for code size.

2004 Winner - Best abuse of CPP. A prime number calculator, all written with C preprocessor. The entry exposed several bugs in all exisitng compilers, and failed compiling on gcc, Microsoft and other compilers. Now some of them are fixed to compile the entry correctly.

2005 Winner - Most circuitous walk. An X11 based 3-D graphical engine, that supports user defined maps and textures.

blueMSX (www.bluemsx.com)

Team leader and main developer for the best open source MSX emulator. The program is a cycle exact emulator that emulates several Z80 based home computers and consoles.

Designed and implemented emulation for 100+ hardware components, including floppy drive controllers, ide controllers, video chips, audio chips, and memory mappers.

Designed and implemented a fully featured graphical Z80 debugger.

Designed and implemented an XML based description language for the GUI which provides an interface to create advanced themes for the program.