Yes this is possible, I use software called Cubic to achieve this.
The basic process is this:
- Open default Ubuntu ISO in Cubic
- Modify the filesystem and install any applications you need e.g. atom, Python etc.
- Create a Pre-seeding file to automate installation. Inside this file you can specify the locale, timezone, language and user accounts to be created.
- Edit the launch parameters of Grub to boot the installer using the pre-seeding file, info on that here. I don't think the guide is particularly great at jump starting this process so as an example here's what my entry in grub.cfg looks like:
menuentry "Install with Preeseeding File" {
set root=(hd0)
set gfxpayload=keep
linux /casper/vmlinuz boot=casper file=/cdrom/preseed/mirror.seed auto=true priority=critical debian-installer/locale=en_GB keyboard-configuration/layoutcode=gb ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=GB localechooser/supported-locales=en_GB.UTF-8 automatic-ubiquity quiet splash ---
initrd /casper/initrd.lz
}
This probably won't work for you because it reference some things specific on my device but I hope it serves as a decent example.
Pre-seeding is complex, the full official guide is here. The plan is to use the template and modify it to your needs.
Some other answers with useful information that will help:
Some pictures of Cubic:
![Editing terminal](https://i.stack.imgur.com/hSVqY.png)
![Adding and customising preseeding file.](https://i.stack.imgur.com/kKyuC.png)
![Editing grub.cfg boot parameters to use preseeding file.](https://i.stack.imgur.com/0Lobu.png)