• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 05:47
CEST 11:47
KST 18:47
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Serral wins HomeStory Cup 2914Serral wins Maestros of the Game 243ByuL, and the Limitations of Standard Play3Team Liquid Map Contest #22: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12
Community News
Weekly Cups (July 27-Aug 2): SHIN's big week0SC4ALL II: Brood War - $2500 - Dec 5-69SC4ALL II announced - $10,000 prize pool, Dec 5-64PIG STY FESTIVAL 8.0! (13 - 23 August)14Neeb returns to progaming; rejoins ONSYDE18
StarCraft 2
General
protoss aoe skill expression 5.0.16 patch for SC2 goes live (8 worker start) StarCraft 2 at SC4ALL II Invite #3/8 - Clem Balance hotfix patch 5.0.16b (July 16) Clem: "I don't have that much hope in Blizzard"
Tourneys
PIG STY FESTIVAL 8.0! (13 - 23 August) Tasteless Time Warp: SC Evo Showmatch (May 25) SC4ALL II announced - $10,000 prize pool, Dec 5-6 Sparkling Tuna Cup - Weekly Open Tournament RSL Revival: Season 6 - Qualifiers and Main Event
Strategy
[G] Having the right mentality to improve
Custom Maps
Nexus Wars 2021 GUIDE [M] (2) Industrial Park
External Content
The PondCast: SC2 News & Results Mutation # 537 Hostile Territory Mutation # 536 Railroad Switch Mutation # 535 Assembly of Vengeance
Brood War
General
ASL 22 Proposed Map Pool Making an Online Broodwar Manager Game ASL22 General Discussion [Personal Project Share] Terran Defense v0.60 Data needed
Tourneys
Escore Tournament - Season 3 SC4ALL II: Brood War - $2500 - Dec 5-6 KCM Race Survival 2026 Season 3 Small VOD Thread 2.0
Strategy
Any training maps people recommend? Fighting Spirit mining rates Simple Questions, Simple Answers Odyssey Mineral Stack Saturation
Other Games
General Games
General RTS Discussion Thread Stormgate/Frost Giant Megathread Nintendo Switch Thread ZeroSpace Early Access is Now Live! Beyond All Reason
Dota 2
Looking for a Dota Mentor Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish TSM pausing esports and CLG Dead
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Power Rank TL Mafia Community Thread NeO.D_StephenKing vs This Guy From 1 Million Dance
Community
General
US Politics Mega-thread European Politico-economics QA Mega-thread The Games Industry And ATVI Russo-Ukrainian War Thread Artificial Intelligence Thread
Fan Clubs
The Clem Fan Club INnoVation Fan Club The Scarlett Fan Club
Media & Entertainment
Anime Discussion Thread Movie Discussion! Series you have seen recently... [Req][Books] Good Fantasy/SciFi books
Sports
Football (Soccer) Thread TeamLiquid Health and Fitness Initiative For 2023 Formula 1 Discussion MLB/Baseball 2023 McBoner: A hockey love story
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread Simple Questions Simple Answers FPS when play League Of Legend on laptop
TL Community
The Automated Ban List Northern Ireland Global Starcraft
Blogs
Please support my new stand…
Peanutsc
What is a Gamer?
TrAiDoS
Hello guys!
LIN1s
ASL S22 English Commentary…
namkraft
Poker (part 2)
Nebuchad
Customize Sidebar...

Website Feedback

Closed Threads



Active: 5657 users

The Big Programming Thread - Page 1014

Forum Index > General Forum
Post a Reply
Prev 1 1012 1013 1014 1015 1016 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
Manit0u
Profile Blog Joined August 2004
Poland17821 Posts
December 05 2019 11:04 GMT
#20261
On December 05 2019 17:27 zatic wrote:
I feel like a first year programmer ... Was stuck for almost 2 days because I had a whitespace trailing a URL I had to compute a hash on. Spent two days trying to find the error in my implementation of building the string to hash or the hashing function because the resulting hashes just would not match. And of course the software I am working with only has a console for debugging where I just couldn't see the stupid whitespace at the end of the URL.


Well, long time ago I've learned to do 2 things:
1. Set my editor/IDE to strip all trailing whitespace and EOF newlines on save.
2. Always strip whitespace from the beginning and end of any strings that enter the system from the outside.

This has saved me a lot of headaches.
Time is precious. Waste it wisely.
zatic
Profile Blog Joined September 2007
Zurich15366 Posts
December 05 2019 12:17 GMT
#20262
Yeah this probably wouldn't have happened had I used my own tools. But this was done on a black box system where I just have an in-browser editor to write the code.
ModeratorI know Teamliquid is known as a massive building
Excludos
Profile Blog Joined April 2010
Norway8277 Posts
December 05 2019 12:31 GMT
#20263
On December 05 2019 17:27 zatic wrote:
I feel like a first year programmer ... Was stuck for almost 2 days because I had a whitespace trailing a URL I had to compute a hash on. Spent two days trying to find the error in my implementation of building the string to hash or the hashing function because the resulting hashes just would not match. And of course the software I am working with only has a console for debugging where I just couldn't see the stupid whitespace at the end of the URL.


Hihi, always fun. I spent a whole day on a simple bug once before realising I had put a > instead of < in a simple for-loop. Sometimes the brain just short-circuits and you start looking in all the wrong places before checking the basics.

To be fair, catching trailing white spaces in a console debugger is next to impossible if you don't know to look specifically for it. I doubt I'd catch that one any quicker either.
Silvanel
Profile Blog Joined March 2003
Poland4769 Posts
Last Edited: 2019-12-06 11:14:34
December 06 2019 11:11 GMT
#20264
In this situation i usually prefere to take a break and claer my mind. Just this week i spent over 1 hour "banging my head into the wall" and couldnt find the source of some weird behavior. I went to eat lunch and after i came back i found source of the problem in under 1 minut. My eyes/mind were omiting the fact that i am converting to string something i shouldnt. And i wouldnt notice it until i took a break.
Pathetic Greta hater.
Excludos
Profile Blog Joined April 2010
Norway8277 Posts
December 06 2019 15:27 GMT
#20265
On December 06 2019 20:11 Silvanel wrote:
In this situation i usually prefere to take a break and claer my mind. Just this week i spent over 1 hour "banging my head into the wall" and couldnt find the source of some weird behavior. I went to eat lunch and after i came back i found source of the problem in under 1 minut. My eyes/mind were omiting the fact that i am converting to string something i shouldnt. And i wouldnt notice it until i took a break.


I swear 80% of my problem solving happens in the bathroom
Artesimo
Profile Joined February 2015
Germany603 Posts
Last Edited: 2019-12-07 20:09:26
December 07 2019 20:08 GMT
#20266
I am having a really weird problem with a uni assignment in c++(well technically not the actual assignment, rather my attempts to do a bit more than what is asked). I am reading in a file and do somethingwith the data but out of curiosity I wanted to start working with the data before the reading in is completed since the reading takes a bit of time in which a bunch of cores do nothing but twist their thumbs. For some reason though, unless I wait about a second after the reading thread has started, I get a Segmentation fault.

the graySortRecord class was provided by my prof and is this:
+ Show Spoiler +

class graySortRecord {
public:
static const int record_size = 100;
static const int key_size = 10;

private:
char data[ record_size ];

public:
// Constructors
graySortRecord( ) = default; // simply copy the only member, data

graySortRecord( const graySortRecord &other ) = default; // simple.

// Destructor
~graySortRecord() = default;

// read only, "safe" getter for the data field
// unsigned char *data( ) const { return data; }

// overloaded "less than" operator
bool operator <(const graySortRecord& rhs) // rhs = right hand side
{ return ( memcmp( data, rhs.data, key_size ) < 0 ); }

// overloaded input
friend std::istream& operator>>( std::istream& in, graySortRecord &rec )
{ return in.read( rec.data, graySortRecord::record_size ); }

// overloaded output
friend std::ostream& operator<<( std::ostream& out, const graySortRecord& rec )
{ return out.write( rec.data, graySortRecord::record_size ); }

};


my read looks like this(running as a single thread):
+ Show Spoiler +

void readFile(std::string fileName) {
std::ifstream inStream(fileName, std::ios::in | std::ios::binary);
if (!inStream.is_open()) {
std::cerr << "ERROR: Could not open input file named "
<< fileName << std::endl;
exit(-2);
}

graySortRecord newRecord;
long int numRecords = 0;
while (inStream >> newRecord) {

mutexRecords.lock();
records.push_back(newRecord);
mutexRecords.unlock();
}
fileReadingDone = true;
}


workerthread function, the code during which the segvault happens.
each thread has its own set of data that doesnt get touched by the other threads.
+ Show Spoiler +

mutexRecords.lock();
if (readingHead < records.size()) {
//get stuff
myRecord = &records[readingPos];//take record to do something later on
readingPos++;
mutexRecords.unlock();

// overloaded "less than" operator
// bool operator <(const graySortRecord& rhs) // rhs = right hand side
// { return ( memcmp( data, rhs.data, key_size ) < 0 ); }
// gets called here resulting in a segvault because the rhs.data[] is only declared but no actual values
}else{
mutexRecords.unlock();
/use idle time for some stuff}


The weird part is I did some dummy debugging with couts and confirmed that readingPos is way behind the number of elements in my records vector. Plus the mutex together with the readingPos should guarantee that I interact with my data safely.
My current assumption is that the overloaded input of graysortRecord doesnt work like I think it does. My assumption is that it dumps that binary data raw into the memory that has been allocated for a graysort record,
giving me back a ready to use graySortRecord but because of the weird segvaults I think this might not be the case? This would mean the mutex in my read function no longer guarantees that there are only finished graySortRecords in my vector of records.

I have some doubts regarding this ssumption though since:
- the segfault happens despite the readingPos behin way behind the filereader, so its not that we fail to work with the most recent object
- I can run this with more threads, and will even end up having stuff happening in the idle block of my worker threads aka they went through all the data thats present atm with the filereader still not finished reading everything without a segvault so for some reason all the graySortRecords are fine as long as I wait a second before I start working on the set???
Manit0u
Profile Blog Joined August 2004
Poland17821 Posts
December 08 2019 11:41 GMT
#20267
Time is precious. Waste it wisely.
zatic
Profile Blog Joined September 2007
Zurich15366 Posts
December 09 2019 06:08 GMT
#20268
On December 05 2019 21:17 zatic wrote:
Yeah this probably wouldn't have happened had I used my own tools. But this was done on a black box system where I just have an in-browser editor to write the code.

At least it's good to know that it happens to the best of us.
https://twitter.com/karpathy/status/1203802860825108480?s=19
ModeratorI know Teamliquid is known as a massive building
Nesserev
Profile Blog Joined January 2011
Belgium2760 Posts
Last Edited: 2019-12-09 15:14:35
December 09 2019 14:51 GMT
#20269
--- Nuked ---
Artesimo
Profile Joined February 2015
Germany603 Posts
Last Edited: 2019-12-10 18:48:44
December 10 2019 18:40 GMT
#20270
On December 09 2019 23:51 Nesserev wrote:

Are you storing the addresses of a vector's elements in your worker threads, while at the same time, you are also pushing new elements at the back of the vector?

Vectors have two "sizes": the current size (how many elements does it currently hold?), and their capacity (how many can it hold?). If a vector's size exceeds its capacity, then room is made for new elements by allocating a new larger block of memory, and the vector's data is copied to this new larger block of memory. This means that if you store the addresses of a vector's elements, and one of these resizings happens, then the stored addresses will still point towards the old block of memory that has been deallocated.

A quick fix would be to reserve enough memory beforehand for the vector by using std::vector.reserve(n) method, where n is a ridiculously large amount of elements, large enough to handle any task realistically thrown your way. This would also explain why you do not get the segmentation fault when you wait long enough first; because then your vector's capacity would already be large enough to hold all the records.

A (better) solution would be not to store the addresses of a vector's elements, if that's possible. (:

Thanks so much, I am not sure if this is the cause of the problem, but it sounds very likely. I mostly chose a vector because of cache efficiency since I have to iterate through it but the more I think about it thats not all that beneficial in my case. Guess a list-like structure will do
Kipsate
Profile Blog Joined July 2010
Netherlands45349 Posts
December 22 2019 16:29 GMT
#20271
This might be perhaps an odd question, I am dipping my toe into learning a bit of programming (mostly frontend) to assist with my daily works (I work in online marketing and as such JS, HTML & CSS can be quite useful, if only to communicate with development properly).

I commute quite a bit, I was wondering what if any resources I could consume that are mobile friendly, that includes stuff such as coding "apps" that I can just do bitesized on the road. I know its better to do stuff on desktop but you know, I might as well spend time commuting a bit useful.
WriterXiao8~~
Acrofales
Profile Joined August 2010
Spain18406 Posts
Last Edited: 2019-12-22 19:22:48
December 22 2019 19:22 GMT
#20272
On December 23 2019 01:29 Kipsate wrote:
This might be perhaps an odd question, I am dipping my toe into learning a bit of programming (mostly frontend) to assist with my daily works (I work in online marketing and as such JS, HTML & CSS can be quite useful, if only to communicate with development properly).

I commute quite a bit, I was wondering what if any resources I could consume that are mobile friendly, that includes stuff such as coding "apps" that I can just do bitesized on the road. I know its better to do stuff on desktop but you know, I might as well spend time commuting a bit useful.

Depends how basic your knowledge is. There's some games to teach you computational thinking that I know of. One I kinda liked is lightbot. If that's what you need, you can give it a try. Other than that, there's online resources that you can do we, but I'd limit it to passive stuff then, because actually writing code on a phone is a nightmare.
Kipsate
Profile Blog Joined July 2010
Netherlands45349 Posts
Last Edited: 2019-12-22 22:21:50
December 22 2019 22:16 GMT
#20273
Passive stuff is fine, I don't need to/want to write code on a phone, I think perhaps getting more theory would be good too, as sometimes I feel like I am executing more stuff and not thinking enough about the thought process behind some code.

In a way I suppose books could work too? But I am a bit war as I feel like programming would be stuff where things change too fast and become outdated?
WriterXiao8~~
Manit0u
Profile Blog Joined August 2004
Poland17821 Posts
Last Edited: 2019-12-23 05:31:56
December 23 2019 05:29 GMT
#20274
On December 23 2019 07:16 Kipsate wrote:
Passive stuff is fine, I don't need to/want to write code on a phone, I think perhaps getting more theory would be good too, as sometimes I feel like I am executing more stuff and not thinking enough about the thought process behind some code.

In a way I suppose books could work too? But I am a bit war as I feel like programming would be stuff where things change too fast and become outdated?


You can always read up on stuff that's quite universal. Different ways of managing programming projects (agile for example) and theory that is applicable to many programming languages and is considered to be quite the standard for working with code.

Some examples:
Clean Code
The Pragmatic Programmer
Design Patterns
Code Complete
GOOS

I think that anyone interested in programming should read those books (all of them).
Time is precious. Waste it wisely.
Acrofales
Profile Joined August 2010
Spain18406 Posts
December 23 2019 13:13 GMT
#20275
On December 23 2019 14:29 Manit0u wrote:
Show nested quote +
On December 23 2019 07:16 Kipsate wrote:
Passive stuff is fine, I don't need to/want to write code on a phone, I think perhaps getting more theory would be good too, as sometimes I feel like I am executing more stuff and not thinking enough about the thought process behind some code.

In a way I suppose books could work too? But I am a bit war as I feel like programming would be stuff where things change too fast and become outdated?


You can always read up on stuff that's quite universal. Different ways of managing programming projects (agile for example) and theory that is applicable to many programming languages and is considered to be quite the standard for working with code.

Some examples:
Clean Code
The Pragmatic Programmer
Design Patterns
Code Complete
GOOS

I think that anyone interested in programming should read those books (all of them).

This. Also a decent intro to algorithms and data structures. I wouldn't deep dive straight into Knuth, but knowing the difference between a linked list and an array is never going to be redundant knowledge.

I've never read it, but seen it mentioned a few times as a good intro: https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230/?tag=javamysqlanta-20

There are also various introductory courses on Coursera or other MOOC platforms, and of course an infinity of YouTube resources for introductions to programming in any language you can imagine.

For front end web programming specifically, it's worthwhile (essential) to go through w3school's tutorials and explanations. But they are very specific, so it's best to know what you're looking for first.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
Last Edited: 2019-12-23 17:12:08
December 23 2019 17:11 GMT
#20276
Given your goals I would suggest just using resource buffet style - only take what you need. Don't read a book end to end.

If you're sticking to front end you don't need Algorithms and Data Structures enough to justify the effort.

Clean Code is good whether you are front or backend, though you should only need the first few chapters IIRC. I've heard the Pragmatic Programmer is good. I wouldn't bother with Design Patterns.

Personally, I think the frameworks and libraries popular nowadays have great open source documentation. If you're currently trying to build a site then it can be useful to look up stuff that's been bothering you on the commute in to expand your knowledge. If you're not currently trying to build a site you should be.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
December 23 2019 17:13 GMT
#20277
Does anyone here know how to make a graph of a Database where the tables are connected by selects, joins, etc. rather than Foreign Keys? It seems like database graphing technology assumes you have key linked tables. For context I am using SQL Server. This would be used to debug/trace data flow in the DB between tables.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Kipsate
Profile Blog Joined July 2010
Netherlands45349 Posts
December 23 2019 17:31 GMT
#20278
Thanks for the help, yes my first project will be to build my own site, seems fun so far but quite overwhelming.
WriterXiao8~~
Manit0u
Profile Blog Joined August 2004
Poland17821 Posts
Last Edited: 2019-12-23 17:56:36
December 23 2019 17:55 GMT
#20279
On December 24 2019 02:13 WarSame wrote:
Does anyone here know how to make a graph of a Database where the tables are connected by selects, joins, etc. rather than Foreign Keys? It seems like database graphing technology assumes you have key linked tables. For context I am using SQL Server. This would be used to debug/trace data flow in the DB between tables.


Well, relational DB's are kind of designed to work with FKs although there are instances where you don't use them, but that's usually due to performance issues. Using selects and joins instead of foreign keys seems like really bad idea when it comes to performance.

Speaking of such graphs, isn't it basically like creating a graph of a view (materialized or not)? Because that's what you get.

[image loading]

http://www.postgresqltutorial.com/managing-postgresql-views/
Time is precious. Waste it wisely.
Acrofales
Profile Joined August 2010
Spain18406 Posts
December 24 2019 00:18 GMT
#20280
On December 24 2019 02:11 WarSame wrote:
Given your goals I would suggest just using resource buffet style - only take what you need. Don't read a book end to end.

If you're sticking to front end you don't need Algorithms and Data Structures enough to justify the effort.

Clean Code is good whether you are front or backend, though you should only need the first few chapters IIRC. I've heard the Pragmatic Programmer is good. I wouldn't bother with Design Patterns.

Personally, I think the frameworks and libraries popular nowadays have great open source documentation. If you're currently trying to build a site then it can be useful to look up stuff that's been bothering you on the commute in to expand your knowledge. If you're not currently trying to build a site you should be.

Eh. An introduction to programming should include, imho, some basics in data structures and algorithms, even if you're just using libraries. Treating libraries as magical black boxes can really screw you over, and it's good to be able to recognize where you might not be able to do so, or how to refactor code to work better with your library suite.

As for design patterns, they aren't all important for front end design, but understanding MVC, client-server, chain-of-responsibility, observer, and for JavaScript specifically, promises are kinda essential (and in general some knowledge of ways to deal with asynchronous distributed computing).

As for web programming in general, it's very important to have a solid understanding of the architecture and HTTP. It's the most common mistake in my students' work that they don't properly understand the concept of how backend and frontend work together to generate a web resource and how HTTP fits into the workflow. A lot of it is hidden away in whatever framework you end up using, but that doesn't mean it won't break if you don't understand the basics of what you're doing.
Prev 1 1012 1013 1014 1015 1016 1032 Next
Please log in or register to reply.
Live Events Refresh
Next event in 13m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
SortOf 120
StarCraft: Brood War
Horang2 1906
Bisu 1035
firebathero 529
Jaedong 283
Soma 188
Larva 119
EffOrt 112
Light 106
Leta 101
Mind 83
[ Show more ]
Stork 50
BeSt 45
hero 41
ZerO 28
sSak 26
Bale 25
NaDa 24
Sharp 19
scan(afreeca) 16
Terrorterran 15
Yoon 8
zelot 6
sorry 5
Counter-Strike
summit1g5996
fl0m2713
shoxiejesuss1336
byalli446
Super Smash Bros
Mew2King123
Other Games
singsing1001
ceh9668
Sick126
Tasteless112
B2W.Neo59
ZerO(Twitch)3
Organizations
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 15 non-featured ]
StarCraft 2
• StrangeGG 61
• LUISG 26
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• WagamamaTV413
• lizZardDota2291
League of Legends
• Jankos1133
Upcoming Events
Escore
13m
IntoTheTV X SOOP
1h 13m
Big Brain Bouts
6h 13m
DnS vs Rex
Reynor vs Cure
Replay Cast
14h 13m
RSL Revival
23h 13m
herO vs SHIN
Clem vs Solar
Serral vs Rogue
Ladder Legends
1d 8h
Ladder Legends
1d 10h
RSL Revival
1d 23h
OSC
2 days
OSC
2 days
[ Show More ]
WardiTV Weekly
3 days
The Patches Monday
3 days
Sparkling Tuna Cup
4 days
PiG Sty Festival
4 days
PiGosaur Cup
4 days
Replay Cast
4 days
Kung Fu Cup
5 days
Replay Cast
5 days
The PondCast
6 days
Replay Cast
6 days
Liquipedia Results

Completed

Proleague 2026-08-05
CranK Gathers Season 4: BW vs SC2 Team League
Eternal Conflict S2 Finale

Ongoing

KCM Race Survival 2026 Season 3
K-JUNGMAN
Acropolis #5
Escore Tournament S3: W6
RSL Revival: Season 6
Esports World Cup 2026: LCQ
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2

Upcoming

Escore Tournament S3: W7
CSLAN 4
ASL Season 22
Escore Tournament S3: W8
Acropolis #5 - TRS
Blizzard Classic Cup 2026
Acropolis #5 - GSA
HSC XXX
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
PiG Sty Festival 8.0
Big Dog Cup 2026 Div 1
Thunderpick World Champ.
ESL Pro League Season 24
Stake Ranked Episode 4
Logitech G Connect 2026
SL StarSeries Fall 2026
FISSURE Playground #5
BLAST Open Fall 2026
Esports World Cup 2026
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Disclosure: This page contains affiliate marketing links that support TLnet.

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.