what's the most complicated program you have ever written ?!

What's the most complicated and advanced program you worked on ?

For arduino, or all-inclusive?
Complicated programs tend to involve teams of people and complicated interactions such that it's difficult to tell where your code leaves off and someone else's begins...

westfw:
For arduino, or all-inclusive?
Complicated programs tend to involve teams of people and complicated interactions such that it's difficult to tell where your code leaves off and someone else's begins...

all-inclusive , and yes that is usually the case , though i have seen many advanced programs created by single programmers ... and it does not have to be extremely complicated ... just the most advanced one you have worked on ..

thank you .

I think the one that has given me most satisfaction was getting JRuby running on an Android system with about 50 lines of Java code. The more "main stream" Ruboto uses hundreds of lines of code.

But I am odd that way. (Less is more).

Modelling the impact of the reliability of electricity generating stations on the need for new generating capacity was also interesting.

...R

Pocket Forth for early Macintosh. I also did a pre-macintosh (but post Xerox Parc) graphical interfaced drawing program called pDraw for the commodore 64. And a web-based nuclear decay mapper using the cgi language Frontier. I still get requests for that, but the technology has long since died. Now I make clocks with Tiny85s. Welcome to hell.

Btree* filesystem, progress 70%
it runs on an home made m68060 board
OS-less, ~DOS: a shell, a filesystem, no concurrency
the storage device is an array of FeRAM
128Mbyte, LBA driven (logic block access)
and the block size is 1024byte

oh, the board has 8Mbyte of DRAM
and the filesystem eats 6Mbyte for its own needs

it's less complex than XFS by different order of magnitude
but there is enough complexity to cause a lot of headaches

a genuine enjoyment of life for me
(sarcasm)

Computed tomography reconstruction, on a 68020 and Mercury Zip coprocessor was the last single-handed most complex thing I wrote.
Thirty years ago :frowning:

I've written five large programs.

  1. My fencing scoring machine, which was actually 4 programs interacting. The lights repeater, which is a promini and picks out the on/off status of 6 lights from a stream of 5 repeating bytes. The main machine, which is a promini and controls the MAX7219 which controls the 8 time and score digits and warning and penalty indicators, drives a 7447 output for the period counter, drives some outputs for the weapon letter (E-S-F), interacts with the RF remote control, sends lights on/off data to the repeater, and receives weapon touch information from a 2nd promini. The 2nd promini which detects the touches of weapons on the opponent and sends info to the main machine promini. And the RF remote control, with 16 buttons, each button press is sent and the promini goes into powerdown sleep mode after a press, a press creating an interrupt to wake it up and scan the buttons to see which was pressed.

I also took the touch detector and rewrote it to drive touch lights and repeater lights for the small fencing machine.

  1. My 8x32 scrolling message display. Parses a message from serial port, stores in it EEPROM, and maps it to a font and scrolls it across the display driven by 4 MAX7219s.

  2. Camera flash controller. Allows control of hundreds of flash units at high speed triggered from camera sync signal. '1284P based.

  3. 15-channel temperature monitor with 15 MAX31865 chips. '1284P based.

  4. Truck heating/refrigeration control card. Development still ongoing to interact with GPS/GSM module. '1284P based.

These designs are pretty simple compared to my most complex design in the late 80s: a 64 bit, multiple megabyte (SRAM) memory control card.
Received 8/16/32/64 read/write commands from multiple masters, accessed one of 8 memory cards with 64/72 bit EDAC chip for data integrity (could correct 1 and 2 bit errors, could detect 3, something like that), and provided capability to swap out columns of memory chips and/or rows of memory chips if bad data was detected that couldn't be corrected by the EDAC chip. Used a 68020 to initialize the memory at turn-on so the system had valid data at startup. The module was two 16 layers cards, each with 50-60 chips (or maybe more), mounted back to back on a copper plate, with a cross over connector for the two sides to send data back & forth and a 5x100 backplane connector for system interaction. Entire system was housed in a 27 slot, 32 layer backplane. My boards used high speed FCT logic, others used other family. Whole thing was a big proof of concept
System debug was fun, with a big textronix logic analyzers hanging off the busses. CPU guys would complain about memory being corrupted until we showed them the write commands coming over the bus where they corrupted things themselves.

AWOL:
most complex thing I wrote.

well, at the beginning, the above file system was assigned as job task, and 6 mounts later it was rejected by the QA-boys because it was judged "too complex" for their avionics products (even if it was just a prototype), therefore those guys asked me to implement a FAT32 filesystem, because - they justified - it also more comfortable because laptops are usually loaded with Windows and you don't need to write a line of code to mount a FAT32 usb-pendrive, and the final user is happy.

what happened next? New fresh start, I have been working on my file system just for personal challenge

Conversion from a commodore 64 basic and very limited program to a stand alone PC based program for container ship stabilisation of ballast during loading / unloading with a pretty basic GUI
Until that time I just figured they took containers off carefully with some sort of load plan.

Only output was a faded dot matrix print from the Commodore.

Added a database system and tracking by ship to it too for the ballast tanks layouts.

Took about a month solid with just me doing the work.
Parallel testing proved out perfectly on the first trip with just some additions for the German ships Captain.

Doubt I could ever do anything of that level again as a sole provider.
Took me a few weeks to come down from the stress and elation but helped by an exceptionally generous supply of duty free from a thankful client.

I wrote a hydraulic analysis program. It started out as a personal utility and finished up at about 800 pages of code. I taught myself as I went. Ultimately got it patented with about 50 claims and have been making it available to engineers all over the world for free.
That said, I am a junkyard programmer at best and the program is certainly due for a face lift and some new functionality.

import Part

material_thickness = 5.5
ring_thickness = 2.1
ring_diameter = 17.8

mj1 = material_thickness / 2.0
mn1 = ring_thickness / 2.0
rr1 = ring_diameter / 2.0

ellipse = Part.Ellipse( App.Vector(rr1+mn1, 0, mj1), mj1, mn1)
ellipse.Axis = App.Vector(0,1,0)
ellipse.AngleXU = 0
# Part.show(ellipse.toShape())
revolution = Part.makeRevolution(ellipse)
revolution.translate( App.Vector( +66.02, +4.79, 0 ) )
Part.show(revolution)

Crossroads, until I read read your post above, I thought you had something to do with physical labour type fencing!

Weedpharma

I spent about 22 years working on/in/with cisco's IOS operating system - the software that runs in many of the routers that make up the internet. (This may be one of the worlds largest "monolithic" C programs.) A lot of team efforts, porting, incremental improvements, maintenance, and re-writing, but there were a couple of features I feel justified in calling "mine." Probably the biggest was "Protocol Translation", including the implementation of X.25 PAD services. (It was rather more important back before TCP/IP won all the protocol wars. For example, if you ran DEC LAT locally, and wanted to communicate over an X.25 WAN, it was faster, more reliable, and more efficient to translate from LAT to PAD and back again than to bridge over the X.25 network (which was what some other vendors were advocating.)
Although I guess I'm prouder of various relatively minor contributions that led to the ability to do a bunch of zero-copy network stack operation...

weedpharma:
Crossroads, until I read read your post above, I thought you had something to do with physical labour type fencing!

Weedpharma

:slight_smile: :slight_smile:

I nearly asked a couplof years ago for a comparitive quote when my fence blew down.

Fortunatley i realised my error before i did.

I suppose The Australian Faunal Directory might qualify, if we include its editor (which is not avaulable to the general public). Currently working on systems to manage scientificnames for plants (etc). Groovy, SPARQL and semantic web, Postgress sql with funky recursive queries. It's all happenning.

My last, (by which I mean I am unlikely to do another,) single handed, non-trivial application, complete with hypertext help system and smart installer.

http://mssystems.co.uk/prodive/pdpromo1

Prodive started life in ~1998 as a hobby. A niche application for a few dozen expert scuba divers in the UK. By 2003 it was taking up most of my time, with tens of thousands of divers having installed it World wide.

Despite the crowd pleasing eye candy, the bit of it I liked best was the silent upgrade engine, which had a programming language all of it's own.