|
DANIEL VIK
|
|
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
|
|
|
Ose Systems Inc. (www.ose.com)
Senior Design Engineer
|
San Diego, CA
1/01-12/02
|
|
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.
|
|
PERSONAL PROJECTS
|
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.
|
|
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.
|
|
|