I have two MSI Computers a newer one and an older one. I have a Java app where I am trying to send the older computer a message.
The older computer is at lan port of 192.168.1.91
Trying to connect with my Java app I get the following error:
java.net.BindException: Cannot assign requested address: bind
I am using the following classes I created and I provide freely here (MIT License)
package network;
import java.io.IOException;
import java.io.StringWriter;
import java.net.BindException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.SocketOption;
import java.net.SocketOptions;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.nio.channels.spi.SelectorProvider;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.logging.Logger;
import multithreading.ThreadUtil;
public class NetworkUtil {
private static Logger logger = Logger.getLogger(NetworkUtil.class.toString());
public static SocketChannel createTCPClientSocket(String address, int port) throws IOException {
SocketAddress socketAddress = new InetSocketAddress(address, port);
SocketChannel socketChannel = SocketChannel.open(socketAddress);
return socketChannel;
}
public static DatagramChannel createUDPClientSocket(String address, int port) throws IOException {
SocketAddress socketAddress = new InetSocketAddress(address, port);
DatagramChannel datagramChannel = DatagramChannel.open();
datagramChannel.bind(socketAddress);
return datagramChannel;
}
public static ServerSocketChannel createTCPServerSocket(int port) throws IOException {
ServerSocketChannel channel = SelectorProvider.provider().openServerSocketChannel();
channel.bind(new InetSocketAddress(port));
return channel;
}
public static DatagramChannel createUDPServerSocket(int port) throws IOException {
DatagramChannel channel = SelectorProvider.provider().openDatagramChannel();
channel.bind(new InetSocketAddress(port));
return channel;
}
public static void connectClientTCP(int port) {
try {
SocketChannel clientChannel = NetworkUtil.createTCPClientSocket("127.0.0.1", port);
final StringWriter stringWriter = new StringWriter();
stringWriter.append("Message to send\n");
byte messageInBytes[] = stringWriter.toString().getBytes();
clientChannel.socket().getOutputStream().write(messageInBytes);
String shutdownMessage = "SHUTDOWN";
clientChannel.socket().getOutputStream().write(shutdownMessage.getBytes());
} catch (IOException e) {
logger.severe("Client Thread Exception: "+e.toString());
}
}
public static void setupServerTCP(ConcurrentLinkedQueue<String> sharedQueue, int port) {
Runnable serverRunnable = () -> {
ServerSocketChannel tcpServer = null;
SocketChannel serverChannel = null;
try {
tcpServer = NetworkUtil.createTCPServerSocket(port);
boolean keepRunning = true;
boolean messageReceived = true;
while (keepRunning) {
if (messageReceived) {
serverChannel = tcpServer.accept();
messageReceived = false;
}
int available = serverChannel.socket().getInputStream().available();
if (available > 0) {
messageReceived = true;
byte bytesRead[] = new byte[available];
serverChannel.socket().getInputStream().read(bytesRead);
String messageRead = new String(bytesRead);
logger.info("Message Read from Server Socket on port "+port+": "+messageRead);
sharedQueue.add(messageRead);
if (messageRead.indexOf("SHUTDOWN")>-1) {
keepRunning = false;
}
}
}
} catch (IOException e) {
logger.severe("Server Thread Exception: "+e.toString());
} finally {
if (null!=tcpServer) {
try {
tcpServer.close();
} catch (IOException e) {
logger.severe("Error closing Server: "+e.getMessage());
}
}
}
logger.info("Exiting Server thread");
};
Thread serverThread = new Thread(serverRunnable);
ThreadUtil.addTask(serverThread);
}
public static void connectClientUDP(String address, int port) {
try {
DatagramChannel clientChannel = NetworkUtil.createUDPClientSocket(address, port+1);
final StringWriter stringWriter1 = new StringWriter();
stringWriter1.append("Message to send test\n");
byte messageInBytes1[] = stringWriter1.toString().getBytes();
DatagramPacket dataPacket = new DatagramPacket(messageInBytes1, messageInBytes1.length);
dataPacket.setSocketAddress(new InetSocketAddress(address,7777));
clientChannel.socket().send(dataPacket);
final StringWriter stringWriter2 = new StringWriter();
stringWriter2.append("SHUTDOWN\n");
byte messageInBytes2[] = stringWriter2.toString().getBytes();
DatagramPacket shutdownDataPacket = new DatagramPacket(messageInBytes2, messageInBytes2.length);
shutdownDataPacket.setSocketAddress(new InetSocketAddress(address,7777));
clientChannel.socket().send(shutdownDataPacket);
} catch (BindException e) {
logger.severe("Bind exception: "+e.toString());
} catch (IOException e) {
logger.severe("Client Thread Exception: "+e.toString());
}
}
public static void setupServerUDP(LinkedBlockingQueue<String> sharedQueue, int port) {
Runnable serverRunnable = () -> {
DatagramChannel udpServer = null;
try {
udpServer = NetworkUtil.createUDPServerSocket(port);
boolean keepRunning = true;
ByteBuffer messageBuffer = ByteBuffer.allocate(1024);
while (keepRunning) {
udpServer.receive(messageBuffer);
String messageRead = new String(messageBuffer.array());
int index = messageRead.indexOf('\n');
messageRead = messageRead.substring(0,index);
logger.info("Message Read from UDP Server Socket on port "+port+": "+messageRead);
sharedQueue.add(messageRead);
messageBuffer.clear();
if (messageRead.indexOf("SHUTDOWN")>-1) {
keepRunning = false;
}
}
} catch (IOException e) {
logger.severe("Server Thread Exception: "+e.toString());
} finally {
if (null!=udpServer) {
try {
udpServer.close();
} catch (IOException e) {
logger.severe("Error closing Server: "+e.getMessage());
}
}
}
logger.info("Exiting Server thread");
};
Thread serverThread = new Thread(serverRunnable);
ThreadUtil.addTask(serverThread);
}
}
Original thoughts are it might be do to as an administrator problem, running eclipse as admin did not seem to fix the problem.
Windows firewall might also be at play here. Attempting to create an outgoing going UDP Connection to 192.168.1.91
Establishing UDP Channel does not require an address, datagram packets require address, added the following and it worked
public static DatagramChannel createUDPClientSocket(String address, int port) throws IOException {
// SocketAddress socketAddress = new InetSocketAddress(address, port);
DatagramChannel datagramChannel = DatagramChannel.open();
datagramChannel.bind(null);
// datagramChannel.bind(socketAddress);
return datagramChannel;
}
Referred to: https://www.baeldung.com/java-nio-datagramchannel
Pretty epic, just got it to play Farandole Phrases remotely
Free Starter Class, MIT License as well
package audio;
import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.logging.Logger;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
public class AudioUtil {
private static Logger logger = Logger.getLogger(AudioUtil.class.getName());
final static int SAMPLING_RATE = 44100; // Audio sampling rate
final static int SAMPLE_SIZE = 2; // Audio sample size in bytes
final static double noteSpeedRatio = 0.2; // Usually set to 1 can be increased to increase Tempo
public static void playSineWaveAtFrequencyForSeconds(double frequency, double seconds) throws InterruptedException, LineUnavailableException {
//Open up audio output, using 44100hz sampling rate, 16 bit samples, mono,
//and big endian byte ordering
AudioFormat format = new AudioFormat(SAMPLING_RATE, 16, 1, true, true);
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
if (!AudioSystem.isLineSupported(info)){
System.out.println("Line matching " + info + " is not supported.");
throw new LineUnavailableException();
}
SourceDataLine line = (SourceDataLine)AudioSystem.getLine(info);
line.open(format);
line.start();
writeSamplesLoop(frequency, line, seconds);
// Done playing the whole waveform, now wait until the queued samples finish
//playing, then clean up and exit
line.drain();
line.close();
}
public static void writeSamplesLoop(double frequency, SourceDataLine line, double seconds) throws InterruptedException {
ByteBuffer cBuf = ByteBuffer.allocate(line.getBufferSize());
//Position through the sine wave as a percentage (i.e. 0 to 1 is 0 to 2*PI)
double fCyclePosition = 0;
int ctSamplesTotal = (int) (SAMPLING_RATE*seconds*noteSpeedRatio);
while (ctSamplesTotal>0) {
double fCycleInc = frequency/SAMPLING_RATE; // Fraction of cycle between samples
cBuf.clear(); // Discard the samples from the last pass
// Figure out how many samples we can add
int ctSamplesThisPass = line.available()/SAMPLE_SIZE;
for (int i=0; i<ctSamplesThisPass; i++) {
cBuf.putShort((short)(Short.MAX_VALUE * Math.sin(2*Math.PI * fCyclePosition)));
fCyclePosition += fCycleInc;
if (fCyclePosition > 1)
fCyclePosition -= 1;
}
//Write sine samples to the line buffer. If the audio buffer is full, this will
// block until there is room (we never write more samples than buffer will hold)
line.write(cBuf.array(), 0, cBuf.position());
ctSamplesTotal -= ctSamplesThisPass; // Update total number of samples written
//Wait until the buffer is at least half empty before we add more
while (line.getBufferSize()/2 < line.available())
Thread.sleep(1);
}
}
public static void playNote(double frequency, double seconds) {
try {
playSineWaveAtFrequencyForSeconds(frequency, seconds);
} catch (InterruptedException e) {
} catch (LineUnavailableException e) {
}
}
private static HashMap<String, Integer> frequencyMap;
public static HashMap<String, Integer> getFrequencyMap() {
if (null!=frequencyMap) {
return frequencyMap;
}
frequencyMap = new HashMap<>();
frequencyMap.put("middleC", 260);
frequencyMap.put("D", 290);
frequencyMap.put("E", 320);
frequencyMap.put("F", 345);
frequencyMap.put("G", 392);
frequencyMap.put("Ab", 415);
frequencyMap.put("A", 445);
frequencyMap.put("Bb", 467);
frequencyMap.put("B", 490);
frequencyMap.put("C", 520);
frequencyMap.put("highDb", 540);
return frequencyMap;
}
public static void playMiddleC(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("middleC"), seconds);
}
public static void playD(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("D"), seconds);
}
public static void playE(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("E"), seconds);
}
public static void playF(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("F"), seconds);
}
public static void playG(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("G"), seconds);
}
public static void playAb(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("Ab"), seconds);
}
public static void playA(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("A"), seconds);
}
public static void playBb(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("Bb"), seconds);
}
public static void playB(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("B"), seconds);
}
public static void playC(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("C"), seconds);
}
public static void playHighDb(double seconds) {
playNote(AudioUtil.getFrequencyMap().get("highDb"), seconds);
}
public static void playFarandolePhrase1() {
// Farandole
AudioUtil.playF(1);
AudioUtil.playMiddleC(1);
AudioUtil.playF(1);
AudioUtil.playG(0.5);
AudioUtil.playAb(0.5);
AudioUtil.playG(0.5);
AudioUtil.playAb(0.5);
AudioUtil.playF(0.5);
AudioUtil.playC(1);
AudioUtil.playAb(0.5);
AudioUtil.playBb(0.5);
AudioUtil.playC(0.5);
AudioUtil.playHighDb(0.5);
AudioUtil.playC(0.5);
AudioUtil.playBb(0.5);
AudioUtil.playAb(0.5);
AudioUtil.playG(0.5);
AudioUtil.playC(0.5);
AudioUtil.playC(0.5);
AudioUtil.playBb(0.5);
AudioUtil.playAb(0.5);
AudioUtil.playG(0.5);
AudioUtil.playAb(0.5);
AudioUtil.playF(0.5);
}
public static void playFarandolePhrase2() {
// Farandole
AudioUtil.playF(1);
AudioUtil.playMiddleC(1);
AudioUtil.playF(1);
AudioUtil.playG(0.5);
AudioUtil.playAb(0.5);
AudioUtil.playG(0.5);
AudioUtil.playAb(0.5);
AudioUtil.playF(0.5);
AudioUtil.playC(1);
AudioUtil.playAb(0.5);
AudioUtil.playBb(0.5);
AudioUtil.playC(0.5);
AudioUtil.playHighDb(0.5);
AudioUtil.playC(0.5);
AudioUtil.playBb(0.5);
AudioUtil.playAb(0.5);
AudioUtil.playAb(1);
AudioUtil.playG(1);
AudioUtil.playF(1);
}
public static void main(String[] args) {
logger.info("Testing Audio System in Java");
playMiddleC(0.2);
playD(0.2);
playE(0.2);
playF(0.2);
playG(0.2);
playA(0.2);
playB(0.2);
playC(0.2);
playMiddleC(0.2); // Octave Contrast
}
}
Also generated some support using the same app on my older MSI Laptop
Don’t forget an extra bottle of water can change a lot, Customer Experience and Quality can be Improved, Customer Experience and Quality can be Improved, Initial conditions can mean a lot, Initial conditions can mean a lot, Others do not get to claim ground on what you can and cannot do, Past activation energy can be clear sailing, The future has yet to be written, Nsdtp! Never Say Die Throughput!, Past activation energy can be clear sailing, Past activation energy can be clear sailing, Don’t forget an extra bottle of water can change a lot, Possible has yet to be defined, Others do not get to claim ground on what you can and cannot do, Small changes do add up.
Small changes do add up, Past activation energy can be clear sailing, Customer Experience and Quality can be Improved, There is hope in a New Day, Small changes do add up, Others do not get to claim ground on what you can and cannot do, Past activation energy can be clear sailing, Customer Experience and Quality can be Improved, Others do not get to claim ground on what you can and cannot do, Don’t forget an extra bottle of water can change a lot, Initial conditions can mean a lot, Others do not get to claim ground on what you can and cannot do, You will Prevail!, You will Prevail!, Don’t forget an extra bottle of water can change a lot.
The future has yet to be written, Encouragement Throughput has yet to be maximized, Don’t forget an extra bottle of water can change a lot, There is hope in a New Day, You can do it!, Past activation energy can be clear sailing, Possible has yet to be defined, Small changes do add up, Possible has yet to be defined, Nsdtp! Never Say Die Throughput!, Initial conditions can mean a lot, Never Say Die!, Never Say Die!, Small changes do add up, Possible is Power.
You can do it!, Past activation energy can be clear sailing, Others do not get to claim ground on what you can and cannot do, Never Say Die!, Possible has yet to be defined, There is hope in a New Day, Never Say Die!, Encouragement Throughput has yet to be maximized, Possible is Power, Nsdtp! Never Say Die Throughput!, Customer Experience and Quality can be Improved, Small changes do add up, Small changes do add up, You can do it!, Don’t forget an extra bottle of water can change a lot.
Possible is Power, You can do it!, Possible has yet to be defined, Never Say Die!, Possible is Power, Encouragement Throughput has yet to be maximized, The future has yet to be written, You will Prevail!, Small changes do add up, You can do it!, The future has yet to be written, Customer Experience and Quality can be Improved, The future has yet to be written, The future has yet to be written, Initial conditions can mean a lot.
Others do not get to claim ground on what you can and cannot do, Initial conditions can mean a lot, Never Say Die!, Others do not get to claim ground on what you can and cannot do, Nsdtp! Never Say Die Throughput!, Nsdtp! Never Say Die Throughput!, Encouragement Throughput has yet to be maximized, Customer Experience and Quality can be Improved, There is hope in a New Day, Initial conditions can mean a lot, The future has yet to be written, There is hope in a New Day, Nsdtp! Never Say Die Throughput!, Possible is Power, Possible is Power.
Past activation energy can be clear sailing, Nsdtp! Never Say Die Throughput!, The future has yet to be written, The future has yet to be written, The future has yet to be written, Initial conditions can mean a lot, Possible is Power, The future has yet to be written, Initial conditions can mean a lot, Never Say Die!, The future has yet to be written, There is hope in a New Day, Small changes do add up, Possible is Power, Encouragement Throughput has yet to be maximized.
Nsdtp! Never Say Die Throughput!, Initial conditions can mean a lot, Customer Experience and Quality can be Improved, The future has yet to be written, Encouragement Throughput has yet to be maximized, There is hope in a New Day, Never Say Die!, Past activation energy can be clear sailing, Possible is Power, Possible has yet to be defined, Others do not get to claim ground on what you can and cannot do, Initial conditions can mean a lot, The future has yet to be written, You will Prevail!, Small changes do add up.
Past activation energy can be clear sailing, Possible is Power, Past activation energy can be clear sailing, Possible has yet to be defined, Don’t forget an extra bottle of water can change a lot, Customer Experience and Quality can be Improved, Never Say Die!, Small changes do add up, There is hope in a New Day, Initial conditions can mean a lot, You can do it!, The future has yet to be written, Never Say Die!, You can do it!, There is hope in a New Day.
Others do not get to claim ground on what you can and cannot do, Never Say Die!, Possible is Power, Possible is Power, The future has yet to be written, Customer Experience and Quality can be Improved, You will Prevail!, Others do not get to claim ground on what you can and cannot do, Others do not get to claim ground on what you can and cannot do, Don’t forget an extra bottle of water can change a lot, The future has yet to be written, Possible has yet to be defined, Possible has yet to be defined, Encouragement Throughput has yet to be maximized, Customer Experience and Quality can be Improved.
Electrical Safety, More Peace, Improved Medical Tech, Throughput, Improved Microscopes, Improved Hospitals, Habitat for Humanity, Teacher Appreciation, Defensive Driving, Encouragement, Teacher Training, Criminal Defense Law, Improved Optics, Clean Water Support, Defensive Driving, Carbon Monoxide Detectors, Focus, Improved Research Ethics, Time Management, Throughput, Respect, Reduced Cognitive Biases Training, Disaster Risk Reduction, Less Burning Buildings, More Peacemaking Water Desalination Plants, Reduced Miscommunication, Water Well Drilling, Defensive Driving, Improved English Support, Improved Magnify Studio, Reduced Villain Level Contrast Training, Water Bottles, Improved Medical Tech, Validation, Seat Belts, Motorcycle Helmets, Improved Medical Research, Power Efficiency, Water Bottles, Electrical Safety, Clean Water Support, Reduced Child Labor, More Peacemaking, Improved Chemical Showers for Labs, Reduced Cognitive Biases Training, Geneva Convention, Improved Learning, Improved Medical Research, Respect Geneva Convention, Water Desalination Plants, Reduced Cognitive Biases Training, Reduced Villain Level Contrast Training, Habitat for Humanity, Improved Magnify Studio, Improved Architectural Blueprints, Glass of Water, Cancer Research, Improved Research Ethics, Habitat for Humanity, Teacher Training, Respect, Carbon Monoxide Detectors, Throughput, More Peace building, Improved English Support, Improved Battery Power, Water Well Drilling, Focus, Geneva Convention, Carbon Monoxide Detectors, Improved Chemical Showers for Labs, Reduced Child Labor, Improved Architectural Blueprints More Peacemaking, Improved Fire Codes, Electrical Safety, Water Well Drilling, Reduced Miscommunication, Improved International Relations, Glass of Water, Motorcycle Helmets, Throughput, Less Burning Buildings, Improved Fire Codes, Improved Learning, Improved Architectural Blueprints, Improved Chemical Showers for Labs, Human Rights, Glass of Water, Glass of Water, Water Desalination Plants, More Peacekeeping, Improved Optics, Improved International Relations, More Peace building, Diversity Training, More Peace, Improved Math Support Time Management, Human Rights, Respect, Improved Magnify Studio, Glass of Water, Teacher Appreciation, Seat Belts, Respect, Defensive Driving, Improved Telescopes, Improved Math Support, Reduced Villain Level Contrast Training, Improved Math Support, Reduced Oppression, Seat Belts, Criminal Defense Law, Improved International Relations, Time Management, Geneva Convention, Geneva Convention, Respect, Criminal Defense Law, Improved Science Support, More Peacekeeping, Improved Microscopes Geneva Convention, Less Burning Buildings, Improved Research Ethics, Seat Belts, Ethics, Improved Research Ethics, Linguistics Training, Seat Belts, Electrical Safety, Improved Math Support, Improved Math Support, Improved Network Throughput and Reach, Improved Chemical Showers for Labs, Improved Architectural Blueprints, Improved English Support, Improved Magnify Studio, Improved Medical Tech, Linguistics Training, Seat Belts, Critical Thinking, Improved Architectural Blueprints, Human Rights, Defensive Driving, Improved Chemical Showers for Labs, Geneva Convention Improved Chemical Showers for Labs, Reduced Miscommunication, Geneva Convention, Geneva Convention, Focus, Improved Battery Power, Improved Network Throughput and Reach, Carbon Monoxide Detectors, Focus, More Peace, Improved Math Support, More Peacemaking, Glass of Water, Improved Medical Research, Water Desalination Plants, Improved Chemical Showers for Labs, Seat Belts, Reduced Cognitive Biases Training, Reduced Cognitive Biases Training, Reduced Miscommunication, Teacher Appreciation, Seat Belts, Disaster Risk Reduction, Improved Microscopes, Focus More Peacemaking, Improved Medical Tech, Improved Research Ethics, More Peacemaking, Improved Architectural Blueprints, Cancer Research, More Peacemaking, Power Efficiency, Improved Medical Research, Motorcycle Helmets, Improved Telescopes, Improved Magnify Studio, More Peacemaking, Linguistics Training, Teacher Training, Criminal Defense Law, Teacher Training, Reduced Cognitive Biases Training, Improved Science Support, Improved Research Ethics, More Peace, Validation, Linguistics Training, More Peacekeeping, Defensive Driving Motorcycle Helmets, Reduced Cognitive Biases Training, Water Desalination Plants, Reduced Cognitive Biases Training, Geneva Convention, Reduced Child Labor, Improved Network Throughput and Reach, Carbon Monoxide Detectors, Improved English Support, Habitat for Humanity, Motorcycle Helmets, Reduced Cognitive Biases Training, Reduced Miscommunication, Seat Belts, Clean Water Support, Improved Hospitals, Improved International Relations, Improved Optics, Improved English Support, Validation, Critical Thinking, Time Management, Improved Math Support, Teacher Training, Improved Medical Research More Peacekeeping, More Peace, Diversity Training, Improved Hospitals, Teacher Training, Respect, More Peacekeeping, Ethics, Cancer Research, Improved Hospitals, Diversity Training, More Peacemaking, Criminal Defense Law, Water Desalination Plants, Improved Optics, Child Car Safety, Linguistics Training, Linguistics Training, Improved Learning, Improved Telescopes, More Peace building, Defensive Driving, Encouragement, Focus, More Peace Eat your vegetables, Eat your vegetables, The prettiest flowers have the most leavesEat your vegetables, Do the dishes, The prettiest flowers have the most leavesGo pick up some important documents from work, Go pick up some important documents from work, Never Say Die!Do the dishes, Eat your vegetables, The prettiest flowers have the most leavesAlways be safe in the lab, Go pick up some important documents from work, Never Say Die!Go pick up some important documents from work, Go pick up some important documents from work, you hug the lovable dictatorAlways be safe in the lab, Go pick up some important documents from work, you hug the lovable dictatorClean your room, Always be safe in the lab, you hug the lovable dictatorEat your vegetables, Do the dishes, you hug the lovable dictatorGo pick up some important documents from work, Eat your vegetables, The prettiest flowers have the most leavesTyphoon, Small Contributions Respected, Compression, Obfuscated Truth, Relevance, Limits, Thermodynamics, Disaster Risk Reduction, Speed of Light, Truth as Relative, Solar Power, Customer Service, Don’t push against a brick wall, Initial Conditions, Ability to Change Path, Direction, Plumbs, Dental Care, Resistance, Low Pressure, Pattern Matching, Obfuscated Truth, Ethics, Feedback Respected, Impedance, Teams
Discouragement, Irrational, Latency, Oranges, Delayed Right Choice, Knowns upsold to Unknowns, Ability to Change Path, Direction, Anxiety, Pain, Fries, Public Relations, Logic, Joules, Fuses, Illogical, Perception, Riddles, Inadequate Support, Resources, Snow, Tornado, Entropy, Joules, Theme, Solar Power
Reaction Time, Rate of Change, Theme, Exponential, Fuses, Electron, Positive Momentum, Linguistics, Time, Linguistics, Harder to divest, Entropy, Customer Service, Corporate Image, The Problem of Evil, Rounding, Chips, Entropy, Compare and Contrast, Unknowns upsold to Knowns, Quantum Entanglement, Resources, Comprehension, Watts, Sociology
Don’t push against a brick wall, Orbits, Fair, Disrespect, Gross Domestic Product, Lab Safety, Compare and Contrast, Hope, Wind Power, Speed of Electricity (Not the speed of light), Snow, Questions, Law, Coffee, Osmosis, Motion, Scientific Notation, Discouragement, Insulation, The Problem of Evil, Joules, Fair, GCFI Outlets, Customer Service, Resources
Communicated Effectively, Pineapples, Carbon Monoxide Detector, Psychology, Feedback, Cantelope, Imagination, Neutron, BTUs, Tangled Cords, Wind Power, Positive Momentum, Water, Logical Fallacies, Velocity, Wind Power, Communism, Insulation, Orbits, Research Ethics, Camouflage, Forms – Aristotle, Logical Fallacies, Anxiety, Accessibility
Point of View, Drag, Carbon Dioxide, Greed, Schrodinger’s Cat, Real Change, Experience, Motion, Flood Zone, Chain Thougts, Pineapples, Hydroelectric Power, Shape, Geothermal Power, Impedance, Small Contributions Appreciated, Reliability, Projections, Hope, Memory, Hope, Research Ethics, Initial Conditions, Low Pressure, Justice
Distrust, Speed of Heat Conductivity, Scale, Orbits, Delayed Right Choice, Pestilence, Possible, Chain Thougts, Relevance, Hydroelectric Power, Riddles, Practical, Chips, Excited State, Valence, Research Ethics, Thermodynamics, Value, Slippery Slope, GCFI Outlets, Equality, Value, Impedance, Macroeconomics, Tangled Cords
Distance, Associations, Morally Right, Tornado, Shear Stregth, Hail, Electron, Weakest Link, Speed of Heat Conductivity, Health, Cake, Weakest Link, Entropy, Flood Zone, Unreasonable, Tornado, Equivocation, Adequate Support, Lift, Buy In, Flood, Precision and Accuracy, Disrespect, Disrespect, Potential Energy
Compressive Forces, Neutron, Excited State, Speed of Heat Conductivity, Fault Tolerance, Maintenance, Disaster Risk Reduction, Capitalism, Reaction Time, Greed, Relevance, Categorize and Classify, Green Energy, Resources, Maintenance, Illogical, Context Clues, Fire, Communicated Effectively, Oranges, Volume, Justice, Hope, Metaphors, Inequality
Lab Safety, Morally Wrong, Truth as Relative, Gravity, Pain, Electron, Knowns upsold to Unknowns, Scale, Hurricane, Acceleration, Socialism, Orbits, Chips, Morally Wrong, Practical, Encouragement, Maintenance, Cover, Riddles, Geothermal Power, Tube Amps, Drilling Water Wells, Flags, Don’t push against a brick wall, Insulation
Also generated a Story Outline from same computer
generateStoryOutline()
Random THEME – Seize the day
Random PLOT – Quest
Imagery Allegory Onomatopoeia Personification Allegory Juxtaposition Metaphor Symbolism Colloquialism Flashback
Random Villain Artificial Intelligence
Artificial Intelligence Kraken Warlock Gas Leak Unstable Future Tech Dragon Siren Artificial Intelligence Shark Kraken Stone Elemental Troll Deranged Sniper Water Elemental Shark Psychopath Martial Law Water Elemental Troll Corrupt Politician
Descriptive Writing Amps
- [tinted, cyan, gray] moon shifted
- [rough, harmonious, green] farm eroded
- [minuscule, kinetic, memorable] silver whispered
- [monumental, important, angry] skyscraper shouted
- [yellow, placid, shaded] aluminum dashed
- [gargantuan, brilliant, pink] city dodged
- [beguiling, sad, sad] spider delivered
- [rough, placid, toned] monster wrote
- [black, blue, daunting] monster unfurled
- [colossal, sweet, proper] bridge unfurled
Random Hero – Rogue
And But Therefore Event Sets
- fight a [monster] but [monster] shows up therefore they fight the [monster]
- Comet cuts across the sky but they are delayed therefore they travel to a new area
- [Hero] gets on motorcycle but [monster] shows up therefore they decide to learn more
- fight a [monster] but [monster] shows up therefore they travel to a new area
- [Hero] gets on horse but [monster] shows up therefore they seek assistance with [side character]
- [Hero] is Inspired and Encouraged by [side character] but it rains therefore they fight the [monster]
- [Hero] gets in jet but it rains therefore they travel to a new area
- [Hero] is given assistance from [side character] but [Side character] shows up therefore they fight the [monster]
- [Hero] gets on horse but they are delayed therefore they seek assistance with [side character]
- Narration highlights allegory that amplifies key details worthy of memory but [Side character] shows up therefore they fight the [monster]
Old laptop has an Intel 7700HQ 4 core 8 logical thread processor
Laptop needs service, keyboard currently not working
A cat pissed closed by the computer didn’t see how much actually got on the keyboard, then trying to clean the cat piss off got some water under the keys