• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 03:30
CEST 09:30
KST 16:30
  • 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
[ASL22] Ro16 Preview: Rough Waters10[ASL22] Ro24 Preview: Siren's Call8[ASL22] Ro24 Preview: Summer's End9Serral wins HomeStory Cup 2915Serral wins Maestros of the Game 244
Community News
StarCraft open world shooter announced at BlizzCon55Weekly Cups (Aug 30-Sep 7): herO thrives amid growing schism10Official StarCraft website teases new content ahead of BlizzCon?166Stellar Fest TWO the Moon (Dec 16-20)9Weekly Cups (August 24-30): Patches' balance mod takes over3
StarCraft 2
General
How do you feel about the StarCraft shooter announcement at BlizzCon 2026? StarCraft open world shooter announced at BlizzCon Balance hotfix patch 5.0.16b (July 16) Team Liquid Map Contest #22: Results and Winners Weekly Cups (Aug 30-Sep 7): herO thrives amid growing schism
Tourneys
RSL goes to London! 2026 Offline Finals Nov 21-22 KSL Week #92 IntoTheTV X SOOP SC2 League : Weekly & Monthly 2026 GSTL Announcement Sparkling Tuna Cup - Weekly Open Tournament
Strategy
[G] Having the right mentality to improve
Custom Maps
Nexus Wars 2021 GUIDE [M] (2) Industrial Park
External Content
Mutation # 542 The Ascended Mutation # 541 Binary Choice The PondCast: SC2 News & Results Mutation # 540 Dodge This
Brood War
General
Official StarCraft website teases new content ahead of BlizzCon? BGH Auto Balance -> http://bghmmr.eu/ Broodwar Prediction Market Practice Partners (Official) [D] Brainstorming a balance patch for Brood war
Tourneys
[ASL22] Ro16 Group A [ASL22] Ro16 Group B Escore Tournament - Season 3 Small VOD Thread 2.0
Strategy
Replay Review Process - What do you do? Simple Questions, Simple Answers Odyssey Mineral Stack Saturation Game Theory for Starcraft
Other Games
General Games
Diablo IV EVE Corporation Nintendo Switch Thread [Maplestory Hardcore] Let's Play~!! General RTS Discussion Thread
Dota 2
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 Community Thread
Community
General
US Politics Mega-thread Trading/Investing Thread UK Politics Mega-thread Things Aren’t Peaceful in Palestine Russo-Ukrainian War Thread
Fan Clubs
MarineLorD Fan Club The Creator Fan Club The ShoWTimE Fan Club
Media & Entertainment
Diablo Animated Series on Netflix Movie Discussion!
Sports
Football (Soccer) Thread TeamLiquid Health and Fitness Initiative For 2023 MLB/Baseball 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List Northern Ireland Global Starcraft
Blogs
Virtual Romance, Real-Life C…
TrAiDoS
Regacy Esports:Our Goa…
regacyesports
Dreaming of BW patches (mod…
c3rberUs
LOCKPICKING NOOB
LUCKY_NOOB
Customize Sidebar...

Website Feedback

Closed Threads



Active: 7528 users

The Big Programming Thread - Page 522

Forum Index > General Forum
Post a Reply
Prev 1 520 521 522 523 524 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.
phar
Profile Joined August 2011
United States1080 Posts
September 24 2014 00:54 GMT
#10421
As a general rule, conversations like that are better held in person than over email. It's a much higher bandwidth, leaves less room for misinterpretation (though still some room, so be clear), doesn't leave a paper trail (probably not a concern for this specific topic, but definitely a cause for concern for other topics), can't be accidentally forwarded/cc'd around, and is just overall more genuine.


Shit that sucks even more than I previously thought. 2 devs, 12 person company. So you have literally nobody to learn from development-wise?

Yea, get out.

Depending on where you live, there may be many places you can apply to. If you're unsure if you can get into any specific place, shotgun approach and just apply to a LOT of places. If you end up interviewing at larger places that have more formal tech interview processes, you can find resources to prepare (I dunno what your 12 person shop is like, but the ~12 person shops I've worked at have seriously lax interviews, if any).
Who after all is today speaking about the destruction of the Armenians?
obesechicken13
Profile Blog Joined July 2008
United States10467 Posts
Last Edited: 2014-09-24 17:52:03
September 24 2014 17:39 GMT
#10422
On September 23 2014 13:37 phar wrote:
Show nested quote +
On September 23 2014 10:47 Blisse wrote:
If you're friends with her and not just coworkers then I would ask to talk to her and go over some of the problems you see she's having and ask what's up because you're worried this is having a negative effect at work, and see if she wants some more help doing stuff (friends right). Otherwise yeah you need to tell your boss and tell them you can't continue working there in these conditions.

I dunno, maybe I'm paranoid.

I would not recommend talking to her, mostly because the last couple paragraphs read like an HR minefield. If you have a co-worker who is straight up lying about things, you start treading in very dangerous waters. I get that you probably don't have HR at a 12 person company, but if you think the problems are as bad as you describe, talk to your boss. Stuff like this is your boss's job to deal with. If you don't feel comfortable, you don't have to directly talk about deceitful behavior, but bring up changes that would have to happen to make accountability like this not be possible in the first place:

* instate code reviews, so you can't just check random-ass code into head without having another dev sign off on it. Also this provides a good way to give direct feedback on code quality and help others improve.
* you could probably stand to have better test infrastructure, if it is true that your tests fail to catch stuff that happens in production (this is not always possible, but you'd be surprised how close you can get tests to catch real problems). Are your tests run automatically when stuff is checked in (maybe even before)?


Whatever you do, I would recommend having the discussion with your boss in person and not over email, because again, HR minefield.


Also, ask your friend for a recommendation to whatever place they went to. While your work environment might improve, I personally would not bet on it.

I'd be scared of the boss talking to her and then her lying about me. Dealing with people is hard and if your boss doesn't trust you or prefers her to you then the worst that can happen is that you'll be out of a job or she'll learn about your feelings towards her, and feel like you went over her head.




Has anyone taken a look at exercism.io? It was on reddit's front page yesterday and seems to be about social coding to improve one's code quality.


Also I'm looking for angular js tutorials.
I think in our modern age technology has evolved to become more addictive. The things that don't give us pleasure aren't used as much. Work was never meant to be fun, but doing it makes us happier in the long run.
tofucake
Profile Blog Joined October 2009
Hyrule19254 Posts
September 24 2014 20:09 GMT
#10423
Her lying isn't a big deal if there's, for instance, a long history of her commits to the repository.
Liquipediaasante sana squash banana
EscPlan9
Profile Blog Joined December 2006
United States2777 Posts
September 24 2014 22:14 GMT
#10424
You would feel comfortable working with someone who will lie about where they are in a project and the problems they have run into? Not a big deal? It's a pretty big deal to me. It's okay if you overlooked something or something you didn't expect popped up or just a dumb error - but take some damn accountability and say "Yeah, I screwed up, my bad, I'll work on fixing it" or "No, I haven't figured out what's causing the problem yet, but I'm narrowing it down". That's the type of person I am much more comfortable working with.
Undefeated TL Tecmo Super Bowl League Champion
tofucake
Profile Blog Joined October 2009
Hyrule19254 Posts
September 25 2014 00:12 GMT
#10425
On September 25 2014 07:14 EscPlan9 wrote:
You would feel comfortable working with someone who will lie about where they are in a project and the problems they have run into? Not a big deal? It's a pretty big deal to me. It's okay if you overlooked something or something you didn't expect popped up or just a dumb error - but take some damn accountability and say "Yeah, I screwed up, my bad, I'll work on fixing it" or "No, I haven't figured out what's causing the problem yet, but I'm narrowing it down". That's the type of person I am much more comfortable working with.

I meant her lying to the boss in the event of a confrontation, not her general suckiness-at-programming.
Liquipediaasante sana squash banana
Ben...
Profile Joined January 2011
Canada3485 Posts
September 25 2014 00:26 GMT
#10426
Yeah, the whole "being a garbage programmer" thing aside, lying to her boss's face will not end well, and putting off dealing with the issue will not do anyone favours (her included). And in this case, it isn't just little fibs, but blatant lies.
"Cliiiiiiiiiiiiiiiiide" -Tastosis
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
September 25 2014 01:49 GMT
#10427
Does anyone or can anyone link me to how you can control the global audio playback in C# or C++ Windows 8? I can't actually find any sources which is weird.
There is no one like you in the universe.
Manit0u
Profile Blog Joined August 2004
Poland17843 Posts
September 25 2014 07:40 GMT
#10428
On September 25 2014 10:49 Blisse wrote:
Does anyone or can anyone link me to how you can control the global audio playback in C# or C++ Windows 8? I can't actually find any sources which is weird.


Maybe this will help?

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn642090.aspx
http://blogs.msdn.com/b/windowsappdev/archive/2012/08/23/media-playback-what-you-need-to-know-about-playing-media-to-make-your-app-shine-in-windows-8.aspx

Second link is better I believe.
Time is precious. Waste it wisely.
Manit0u
Profile Blog Joined August 2004
Poland17843 Posts
Last Edited: 2014-09-25 07:53:05
September 25 2014 07:48 GMT
#10429
Now, to share some of my woes with you...

So, I'm tasked with bug hunting in one of the old projects my company commited. What I'm facing now are functions like:


$this->s('something', 'somewhere');
$this->g('something', 'somewhere');


From the code alone I can see they're some setters and getters, but how do they work? Searching the project for "function s(" yields 17 function definitions in various classes. The classes I'm debugging, that are invoking those functions, are up to 9th generation with multiple of their ancestors overriding those functions. To make things worse, even classes that seem similar in nature and function take different inheritance routes from the base class, even including empty "bridge" classes to bypass some functionality. Of course, nothing of it is documented or even commented in code...

And I have to deal with bloated classes and methods because someone who wrote them has never heard of SRP. This wouldn't be such a big deal if not for stuff like that being everywhere:


function SomeFunc($args) {
$var = new SomeObj();
// do some stuff with $var

// halfway down the function

$var = DatabaseData;
// do stuff with $var
}


and


if (isset($somevar)) {
switch ($somevar) {
case 'something':
return 'something';
break;
case 'somethingelse':
return 'somethingelse';
break;
}
}


To say this is all confusing would be a great understatement...
Time is precious. Waste it wisely.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2014-09-25 09:21:44
September 25 2014 09:20 GMT
#10430
Best case, install XDebug and go through it step by step.
Worst case, var_dump/print_r/error_log everywhere (aka shotgun debugging) and hope for the best.

I found that XDebug with step by step debugging and breakpoints increased my productivity a lot, but sadly a lot of corporate development environments don't allow for it.

Hey, at least the code is object oriented (or at least what I call "object based").
Manit0u
Profile Blog Joined August 2004
Poland17843 Posts
Last Edited: 2014-09-25 11:34:42
September 25 2014 11:34 GMT
#10431
On September 25 2014 18:20 Morfildur wrote:
Hey, at least the code is object oriented (or at least what I call "object based").


Small parts of it are. Most of it is written procedurally on top of an OO framework...
Time is precious. Waste it wisely.
tofucake
Profile Blog Joined October 2009
Hyrule19254 Posts
September 25 2014 13:56 GMT
#10432
On September 25 2014 16:48 Manit0u wrote:
Now, to share some of my woes with you...

So, I'm tasked with bug hunting in one of the old projects my company commited. What I'm facing now are functions like:


$this->s('something', 'somewhere');
$this->g('something', 'somewhere');


From the code alone I can see they're some setters and getters, but how do they work? Searching the project for "function s(" yields 17 function definitions in various classes. The classes I'm debugging, that are invoking those functions, are up to 9th generation with multiple of their ancestors overriding those functions. To make things worse, even classes that seem similar in nature and function take different inheritance routes from the base class, even including empty "bridge" classes to bypass some functionality. Of course, nothing of it is documented or even commented in code...

And I have to deal with bloated classes and methods because someone who wrote them has never heard of SRP. This wouldn't be such a big deal if not for stuff like that being everywhere:


function SomeFunc($args) {
$var = new SomeObj();
// do some stuff with $var

// halfway down the function

$var = DatabaseData;
// do stuff with $var
}


and


if (isset($somevar)) {
switch ($somevar) {
case 'something':
return 'something';
break;
case 'somethingelse':
return 'somethingelse';
break;
}
}


To say this is all confusing would be a great understatement...


Are they magic? Or wrappers for magic?
Liquipediaasante sana squash banana
Manit0u
Profile Blog Joined August 2004
Poland17843 Posts
Last Edited: 2014-09-25 19:35:21
September 25 2014 19:34 GMT
#10433
They're fucked up, that's what they are (they call get and set methods in one of the ancestors, which override some other get and set methods which in turn wrap magic methods in their ancestors)

And got a new request from the client, asking us to remove all password confirmation fields from the register forms because "no one is using that in the civilized world any more". I was more than happy to oblige, just to make them suffer.
Time is precious. Waste it wisely.
Alzadar
Profile Blog Joined April 2010
Canada5009 Posts
Last Edited: 2014-09-25 21:26:18
September 25 2014 21:25 GMT
#10434
Not really going anywhere with this, just wanting to write about this task snowballing I've encountered.

So I was assigned to get our product's test suite working (I'm a co-op student). Our tests have a mechanism where you can reference env variables using a special syntax, and you could define those env variables in a .conf file.

I noticed that when I changed the .conf file, sometimes the values seemed to be the same as before I changed it. Eventually I figured out that the env variables were being assigned values all over the place by various setup functions, so you couldn't rely on the .conf file having any effect.

What made this hard to detect is that the script that switches in the env values prints out the variable it's using, but not its value, so you can't tell what command is being given. So I decided it would be very useful for debugging to print both the variable name and its value.

Problem is the code that parses the commands and replaces the special syntax variables was copy and pasted in seven different locations (all exactly identical). I figured if I was going to change the functionality I might as well unify all this code into a single function.

But then in doing that I discovered that changing source files sometimes seemed to have no effect, and it was because I have a duplication of the test suite, and a lot of the source commands (this is Tcl by the way) use hard coded paths to refer to the production test suite. There is a baseDir variable but it isn't always used and it seems to get changed by a few scripts which seems insane to me.

I feel like I'm pulling at a loose thread in a sweater until eventually there'll be nothing left. o_O
I am the Town Medic.
ThatGuy
Profile Blog Joined April 2008
Canada695 Posts
September 25 2014 22:19 GMT
#10435
On September 26 2014 06:25 Alzadar wrote:
Not really going anywhere with this, just wanting to write about this task snowballing I've encountered.

So I was assigned to get our product's test suite working (I'm a co-op student). Our tests have a mechanism where you can reference env variables using a special syntax, and you could define those env variables in a .conf file.

I noticed that when I changed the .conf file, sometimes the values seemed to be the same as before I changed it. Eventually I figured out that the env variables were being assigned values all over the place by various setup functions, so you couldn't rely on the .conf file having any effect.

What made this hard to detect is that the script that switches in the env values prints out the variable it's using, but not its value, so you can't tell what command is being given. So I decided it would be very useful for debugging to print both the variable name and its value.

Problem is the code that parses the commands and replaces the special syntax variables was copy and pasted in seven different locations (all exactly identical). I figured if I was going to change the functionality I might as well unify all this code into a single function.

But then in doing that I discovered that changing source files sometimes seemed to have no effect, and it was because I have a duplication of the test suite, and a lot of the source commands (this is Tcl by the way) use hard coded paths to refer to the production test suite. There is a baseDir variable but it isn't always used and it seems to get changed by a few scripts which seems insane to me.

I feel like I'm pulling at a loose thread in a sweater until eventually there'll be nothing left. o_O


[image loading]
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2014-09-26 03:28:16
September 26 2014 02:56 GMT
#10436
On September 25 2014 16:40 Manit0u wrote:
Show nested quote +
On September 25 2014 10:49 Blisse wrote:
Does anyone or can anyone link me to how you can control the global audio playback in C# or C++ Windows 8? I can't actually find any sources which is weird.


Maybe this will help?

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn642090.aspx
http://blogs.msdn.com/b/windowsappdev/archive/2012/08/23/media-playback-what-you-need-to-know-about-playing-media-to-make-your-app-shine-in-windows-8.aspx

Second link is better I believe.


Thanks, but those were for Windows Store apps, I was looking for a WPF solution.

Can't believe this but I don't think it's possible on WPF... o_o

What is the keyboard input that generates the "Play next song" input? A lot of keyboards have it but Googling has failed me on how they work.

edit: found something that hopefully works here (this is so much trouble and why i wish ms would move to android style docs)

http://msdn.microsoft.com/en-us/library/dd375731(v=VS.85).aspx

Sick, that method totally works (y) i got my kinect to detect my voice now so i can control my media with my voice :D
There is no one like you in the universe.
lannisport
Profile Joined February 2012
878 Posts
September 26 2014 11:49 GMT
#10437
I have a question. Are there any Windows 8 users here who develop in python? I'm about to get a new laptop but my biggest fear is that certain programs such as PyCharm 3.0 won't translate 100% perfectly in Windows 8. Am I just being paranoid here or are the slight speed boosts over Windows 7 not worth the uncertainty factor?
ZealotSensei
Profile Joined September 2011
Denmark70 Posts
Last Edited: 2014-09-26 13:49:27
September 26 2014 13:48 GMT
#10438
Hey guys! I'm really new to node.js and having a bit of a problem with objects. Lets say I have two files, one called printer.js and another called database.js. printer.js prints the results database returns. printer.js looks like this:

 
var db = require("./database")

db.getStations(dbReturn);

function dbReturn(stations) {
for(var i = 0; i < stations.length; i++) {
console.log('id: ' + stations.id);
}
}


and my database.js looks like this:


function getStations(callback){


var listOfStations = [];

for(var index = 0; index < 10; index++) {
var station = new Station(index);
listOfStations[index] = station;
}
callback(listOfStations);
}

function Station(id){
this.id = id;
}

exports.getStations = getStations;


I would just like to mention that Station class has a lot more members than that. But the problem here is that I cannot access the members from the Station objects I created in database.js from printer.js. I am having quite a bit of trouble figuring out how to do this. I have learned how to create a new object of Station in printer.js by exporting Station, but I still can't access the members of an object I created somewhere else! It just spits out 10 x "id: undefined" Can any of you guys help me?
Those who give up freedom for security deserve neither!
FreeZer
Profile Joined January 2011
Sweden288 Posts
September 26 2014 14:49 GMT
#10439
I just came across generators in python. Generators are the fucking bomb. I'm still wrapping my mind around this new concept and the more I think about it the more stuff I come up with to use them for. I mean... it's a function that can return a value.. but keep its stack data! So you can enter the function again, and it keeps running from where it left off until it returns again. Short example if you don't know what it is:


def mygen():
yield 1
yeild 2
yield 3

gen = mygen()
for n in gen:
print(n)

>>> 1
>>> 2
>>> 3


At first glance this might not seem so awesome, it's just iterating right? WRONG! The cool thing is that the generator can maintain its own state! And you can connect many generators together to form a massive processing pipeline.

If you're intrigued, check out http://www.dabeaz.com/generators/

I just heard generators are coming to Javascript, which made me really excited!
Ahh Scept-- hey where did you come from?
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
September 26 2014 16:15 GMT
#10440
If you like generators and iterators you should read about coroutines


On September 26 2014 20:49 lannisport wrote:
I have a question. Are there any Windows 8 users here who develop in python? I'm about to get a new laptop but my biggest fear is that certain programs such as PyCharm 3.0 won't translate 100% perfectly in Windows 8. Am I just being paranoid here or are the slight speed boosts over Windows 7 not worth the uncertainty factor?


There's no difference between Python files on different platforms except for line endings.
There is no one like you in the universe.
Prev 1 520 521 522 523 524 1032 Next
Please log in or register to reply.
Live Events Refresh
Next event in 2h 30m
[ Submit Event ]
Live Streams
Refresh
StarCraft: Brood War
Shuttle 5802
actioN 332
Stork 196
910 82
Aegong 52
yabsab 30
Dota 2
ODPixel405
NeuroSwarm197
XcaliburYe29
Other Games
summit1g13145
KnowMe142
mouzStarbuck92
kaitlyn24
Organizations
Other Games
BasetradeTV237
StarCraft: Brood War
UltimateBattle 16
[ Show 11 non-featured ]
StarCraft 2
• Berry_CruncH368
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• lizZardDota2181
League of Legends
• Jankos1534
Upcoming Events
Sparkling Tuna Cup
2h 30m
WardiTV Invitational
3h 30m
ByuN vs Percival
Cure vs Classic
Shopify Rebellion Sundays
7h 30m
Spirit vs Mixu
Clem vs TBD
RSL Revival
8h 30m
Serral vs Rogue
BlizzCon
11h
IdrA vs MC
Replay Cast
16h 30m
Afreeca Starleague
1d 2h
Light vs JyJ
Soulkey vs hero
WardiTV Weekly
1d 3h
Monday Night Weeklies
1d 8h
Afreeca Starleague
2 days
Snow vs Shinee
Shine vs EffOrt
[ Show More ]
GSL
2 days
PiGosaur Cup
2 days
The PondCast
3 days
Kung Fu Cup
3 days
Replay Cast
3 days
KCM Race Survival
4 days
IntoTheTV X SOOP
4 days
Replay Cast
4 days
IntoTheTV X SOOP
5 days
Replay Cast
5 days
GSL
6 days
Replay Cast
6 days
Liquipedia Results

Completed

Acropolis #5 - TRS
PiG Sty Festival 8.0
Big Dog Cup 2026 Div 1

Ongoing

KCM Race Survival 2026 Season 3
K-JUNGMAN
ASL Season 22
Super Anchor Qualifying S3
CSL 2026 AUTUMN (S22)
Acropolis #5
Blizzard Classic Cup 2026
Blizzard Classic Cup 2026
RSL Revival: Season 6
Calamity Invitational
FISSURE Playground #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026

Upcoming

Acropolis #5 - GSA
Acropolis #5 - GSB
Acropolis #5 - GSC
SC4ALL II: Brood War
HSC XXX
Stellar Fest 2: Lunar Cup
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
PGL Major Singapore 2026
Stake Ranked Episode 6
BLAST Rivals Fall 2026
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
1win Private Club #2
Thunderpick World Champ. '26
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #1
Logitech G Play Connect 2026
SL StarSeries Fall 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...

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.