• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 05:20
CET 11:20
KST 19:20
  • 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
RSL Season 3 - Playoffs Preview0RSL Season 3 - RO16 Groups C & D Preview0RSL Season 3 - RO16 Groups A & B Preview2TL.net Map Contest #21: Winners12Intel X Team Liquid Seoul event: Showmatches and Meet the Pros10
Community News
Weekly Cups (Dec 1-7): Clem doubles, Solar gets over the hump1Weekly Cups (Nov 24-30): MaxPax, Clem, herO win2BGE Stara Zagora 2026 announced15[BSL21] Ro.16 Group Stage (C->B->A->D)4Weekly Cups (Nov 17-23): Solar, MaxPax, Clem win3
StarCraft 2
General
Weekly Cups (Dec 1-7): Clem doubles, Solar gets over the hump Chinese SC2 server to reopen; live all-star event in Hangzhou Maestros of the Game: Live Finals Preview (RO4) BGE Stara Zagora 2026 announced Weekly Cups (Nov 24-30): MaxPax, Clem, herO win
Tourneys
Sparkling Tuna Cup - Weekly Open Tournament Tenacious Turtle Tussle StarCraft2.fi 15th Anniversary Cup RSL Offline Finals Info - Dec 13 and 14! StarCraft Evolution League (SC Evo Biweekly)
Strategy
Custom Maps
Map Editor closed ?
External Content
Mutation # 503 Fowl Play Mutation # 502 Negative Reinforcement Mutation # 501 Price of Progress Mutation # 500 Fright night
Brood War
General
Let's talk about Metropolis BGH Auto Balance -> http://bghmmr.eu/ [BSL21] RO8 Bracket & Prediction Contest Foreign Brood War BW General Discussion
Tourneys
[Megathread] Daily Proleagues Small VOD Thread 2.0 [BSL21] RO16 Group D - Sunday 21:00 CET [BSL21] RO16 Group A - Saturday 21:00 CET
Strategy
Fighting Spirit mining rates Current Meta Game Theory for Starcraft How to stay on top of macro?
Other Games
General Games
Nintendo Switch Thread Stormgate/Frost Giant Megathread EVE Corporation Path of Exile ZeroSpace Megathread
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Mafia Game Mode Feedback/Ideas Survivor II: The Amazon Sengoku Mafia TL Mafia Community Thread
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread YouTube Thread European Politico-economics QA Mega-thread Things Aren’t Peaceful in Palestine
Fan Clubs
White-Ra Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
TL+ Announced Where to ask questions and add stream?
Blogs
How Sleep Deprivation Affect…
TrAiDoS
I decided to write a webnov…
DjKniteX
James Bond movies ranking - pa…
Topin
Thanks for the RSL
Hildegard
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1013 users

The Big Programming Thread - Page 772

Forum Index > General Forum
Post a Reply
Prev 1 770 771 772 773 774 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.
Hhanh00
Profile Joined May 2016
34 Posts
October 04 2016 10:33 GMT
#15421
Too often you see developers who jump to coding before they have a solid design or any idea of what they need to do. Even in interviews they try to write code before having an algorithm. Sure, there are things that are better done on the computer but to get an idea of how a person's mind work, I think it's good to use a white board. Besides, relying on debuggers is a bad habit because nowadays many bugs are very hard to reproduce.
RoomOfMush
Profile Joined March 2015
1296 Posts
October 04 2016 12:11 GMT
#15422
That is why, as a cool kid, you rely on static and dynamic code analysis.

What we like to do in exams is give students unfinished code and a description of what the code is supposed to do and they have to finish the code or fix bugs if there are any. (We tell them beforehand if there are bugs or not)
They dont have to give us a perfect solution as long as it does what it is supposed to, but the space we give them on the sheets is very limited. We dont grade silly syntactical errors like missing semicolons or misspelled variable names unless they overdo it like not using ANY semicolons and stuff like that.

@JavaScript:
I sure am glad I never wanted to get involved with that. I saw it as the mess it was the first time I saw it in WebDev classes. There are a lot of job opportunities that rely on web-dev though.
tofucake
Profile Blog Joined October 2009
Hyrule19177 Posts
October 04 2016 13:12 GMT
#15423
On October 04 2016 19:24 Manit0u wrote:
Let me also share something that really cracked me up:
https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f

There's a JS one too https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f#.1vn12jgr5
Liquipediaasante sana squash banana
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
October 04 2016 13:43 GMT
#15424
On October 04 2016 22:12 tofucake wrote:
Show nested quote +
On October 04 2016 19:24 Manit0u wrote:
Let me also share something that really cracked me up:
https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f

There's a JS one too https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f#.1vn12jgr5


That's pretty much why I decided to move back to AngularJS 1, which is actually easy to use and doesn't require a billion extra things. Sure, it's a pre-2016 library, but I actually don't have the patience for all that nonsense.

JavaScript is a nice language, especially outside the bad browser implementations, but the whole environment around it is a mess and library developers have completely lost track of what web developers actually need. Then again, that seems to be a trend in frameworks and libraries in all programming languages these days.... or I'm just getting too old for this.
Hhanh00
Profile Joined May 2016
34 Posts
October 04 2016 14:14 GMT
#15425
On October 04 2016 22:12 tofucake wrote:
Show nested quote +
On October 04 2016 19:24 Manit0u wrote:
Let me also share something that really cracked me up:
https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f

There's a JS one too https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f#.1vn12jgr5


The scary part is that it's not even the full picture. He didn't mention anything about node js and isomorphic webapps for example. haha
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
October 04 2016 17:29 GMT
#15426
On October 04 2016 19:33 Hhanh00 wrote:
Too often you see developers who jump to coding before they have a solid design or any idea of what they need to do. Even in interviews they try to write code before having an algorithm. Sure, there are things that are better done on the computer but to get an idea of how a person's mind work, I think it's good to use a white board. Besides, relying on debuggers is a bad habit because nowadays many bugs are very hard to reproduce.

Why would bugs be harder to reproduce nowadays than before?

Also jumping straight to code isn't exactly a terrible thing if you are actually refactoring towards good design (and not just cleaning up small stuff) frequently and consequently.
If you have a good reason to disagree with the above, please tell me. Thank you.
BluzMan
Profile Blog Joined April 2006
Russian Federation4235 Posts
Last Edited: 2016-10-04 18:35:03
October 04 2016 18:34 GMT
#15427
On October 05 2016 02:29 spinesheath wrote:
Show nested quote +
On October 04 2016 19:33 Hhanh00 wrote:
Too often you see developers who jump to coding before they have a solid design or any idea of what they need to do. Even in interviews they try to write code before having an algorithm. Sure, there are things that are better done on the computer but to get an idea of how a person's mind work, I think it's good to use a white board. Besides, relying on debuggers is a bad habit because nowadays many bugs are very hard to reproduce.

Why would bugs be harder to reproduce nowadays than before?

Also jumping straight to code isn't exactly a terrible thing if you are actually refactoring towards good design (and not just cleaning up small stuff) frequently and consequently.


Well, nowadays even mobile phones are quad-core, so much of production code is multithreaded. Debugging anything multithreaded is damn pain. You might not even have directly visible threads in your environment or even use a data-race-free language, but every now and then you're pretty much guaranteed to run into some case when multiple processors execute some code at the same time and the order of them producing results matters.
You want 20 good men, but you need a bad pussy.
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
October 04 2016 19:28 GMT
#15428
On October 05 2016 03:34 BluzMan wrote:
Show nested quote +
On October 05 2016 02:29 spinesheath wrote:
On October 04 2016 19:33 Hhanh00 wrote:
Too often you see developers who jump to coding before they have a solid design or any idea of what they need to do. Even in interviews they try to write code before having an algorithm. Sure, there are things that are better done on the computer but to get an idea of how a person's mind work, I think it's good to use a white board. Besides, relying on debuggers is a bad habit because nowadays many bugs are very hard to reproduce.

Why would bugs be harder to reproduce nowadays than before?

Also jumping straight to code isn't exactly a terrible thing if you are actually refactoring towards good design (and not just cleaning up small stuff) frequently and consequently.


Well, nowadays even mobile phones are quad-core, so much of production code is multithreaded. Debugging anything multithreaded is damn pain. You might not even have directly visible threads in your environment or even use a data-race-free language, but every now and then you're pretty much guaranteed to run into some case when multiple processors execute some code at the same time and the order of them producing results matters.

And how is that different from various functions reading from and writing to global state in undocumented side effects? Bad code has always been and will always be hard to debug.
If you have a good reason to disagree with the above, please tell me. Thank you.
BluzMan
Profile Blog Joined April 2006
Russian Federation4235 Posts
October 04 2016 23:16 GMT
#15429
On October 05 2016 04:28 spinesheath wrote:
Show nested quote +
On October 05 2016 03:34 BluzMan wrote:
On October 05 2016 02:29 spinesheath wrote:
On October 04 2016 19:33 Hhanh00 wrote:
Too often you see developers who jump to coding before they have a solid design or any idea of what they need to do. Even in interviews they try to write code before having an algorithm. Sure, there are things that are better done on the computer but to get an idea of how a person's mind work, I think it's good to use a white board. Besides, relying on debuggers is a bad habit because nowadays many bugs are very hard to reproduce.

Why would bugs be harder to reproduce nowadays than before?

Also jumping straight to code isn't exactly a terrible thing if you are actually refactoring towards good design (and not just cleaning up small stuff) frequently and consequently.


Well, nowadays even mobile phones are quad-core, so much of production code is multithreaded. Debugging anything multithreaded is damn pain. You might not even have directly visible threads in your environment or even use a data-race-free language, but every now and then you're pretty much guaranteed to run into some case when multiple processors execute some code at the same time and the order of them producing results matters.

And how is that different from various functions reading from and writing to global state in undocumented side effects? Bad code has always been and will always be hard to debug.

That was the answer to why errors might be hard to reproduce. Bad code doesn't (usually) have stochastic nature, threading errors do. You might do "all the same things" and never reproduce the bug again.
You want 20 good men, but you need a bad pussy.
Hhanh00
Profile Joined May 2016
34 Posts
October 05 2016 00:17 GMT
#15430
On October 05 2016 04:28 spinesheath wrote:
Show nested quote +
On October 05 2016 03:34 BluzMan wrote:
On October 05 2016 02:29 spinesheath wrote:
On October 04 2016 19:33 Hhanh00 wrote:
Too often you see developers who jump to coding before they have a solid design or any idea of what they need to do. Even in interviews they try to write code before having an algorithm. Sure, there are things that are better done on the computer but to get an idea of how a person's mind work, I think it's good to use a white board. Besides, relying on debuggers is a bad habit because nowadays many bugs are very hard to reproduce.

Why would bugs be harder to reproduce nowadays than before?

Also jumping straight to code isn't exactly a terrible thing if you are actually refactoring towards good design (and not just cleaning up small stuff) frequently and consequently.


Well, nowadays even mobile phones are quad-core, so much of production code is multithreaded. Debugging anything multithreaded is damn pain. You might not even have directly visible threads in your environment or even use a data-race-free language, but every now and then you're pretty much guaranteed to run into some case when multiple processors execute some code at the same time and the order of them producing results matters.

And how is that different from various functions reading from and writing to global state in undocumented side effects? Bad code has always been and will always be hard to debug.


I said that bugs are harder to reproduce because we have more source of random bugs. The memory corruption issues you mentioned didn't go away and now we have multi-threading problems too since multi-core CPUs are common.

In a sense it is like micro vs macro. You don't need a computer to see if a guy is good at design. Once you have the data structures / model and the main work flow, implementation is not much of a deal.

Though, if you are hiring an entry-level developer whose job is only to code, you may have different priorities.
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
Last Edited: 2016-10-05 00:45:08
October 05 2016 00:44 GMT
#15431
I have directions on my newest project in java 2 class has me create a GUI and then it does some stuff (what it does is unimportant).

They want me to implement one of my ActionListeners with an inner class, which I do. And in the constructor I add the listener to my button.

They also want me to implement one of my ActionListeners as an anonymous class. I am not sure how I go about doing this. Would I put my anonymous class inside my constructor.. like this?

member.addActionListener(new ActionListener() {

//ActionListener methods/code goes here

}; );

Blitzkrieg0
Profile Blog Joined August 2010
United States13132 Posts
Last Edited: 2016-10-05 02:02:08
October 05 2016 01:02 GMT
#15432
disregard.
I'll always be your shadow and veil your eyes from states of ain soph aur.
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
October 05 2016 01:14 GMT
#15433
I *think* I understand your description of it. But I still need to know, is my use of it correct in this context?

new ActionListener() { etc... } being the anonymous class?
OrangeGarage
Profile Joined October 2015
Korea (South)319 Posts
October 05 2016 01:30 GMT
#15434
Hihi~ I was just wondering if there was anyway to set 1 string equal to another in java!
I'm not talking about the .equals method, which only seems to return a boolean value, but a method that will directly transfer/copy String 1 to String 2!
I am drone! My dream is Hatchery!
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
Last Edited: 2016-10-05 01:38:31
October 05 2016 01:33 GMT
#15435
On October 05 2016 10:30 RCCar wrote:
Hihi~ I was just wondering if there was anyway to set 1 string equal to another in java!
I'm not talking about the .equals method, which only seems to return a boolean value, but a method that will directly transfer/copy String 1 to String 2!


Are you asking about copying the reference, or about copying the value?

Like, if your string you want to copy says "hello", do you want 2 different variables that point to this "hello", or do you want 2 different variables that point to 2 different "hello"s ?


If the answer is that you don't care and you just want stringOne to say the same thing as stringTwo, then just say

stringOne = stringTwo;


I guess Strings are immutable in java so copying the reference is irrelevant anyways.
Hanh
Profile Joined June 2016
146 Posts
October 05 2016 01:35 GMT
#15436
On October 05 2016 10:14 travis wrote:
I *think* I understand your description of it. But I still need to know, is my use of it correct in this context?

new ActionListener() { etc... } being the anonymous class?


That's correct.
Blitzkrieg0, what you described isn't an anonymous class in Java. It looks more like what C has but in your example the anonymous class has a name so I'm not sure what you mean by this.
Blitzkrieg0
Profile Blog Joined August 2010
United States13132 Posts
October 05 2016 02:05 GMT
#15437
On October 05 2016 10:35 Hanh wrote:
Show nested quote +
On October 05 2016 10:14 travis wrote:
I *think* I understand your description of it. But I still need to know, is my use of it correct in this context?

new ActionListener() { etc... } being the anonymous class?


That's correct.
Blitzkrieg0, what you described isn't an anonymous class in Java. It looks more like what C has but in your example the anonymous class has a name so I'm not sure what you mean by this.


Apparently I have no idea what I'm talking about, but after reading up on it I have no idea why you'd want to do functional programming in Java.
I'll always be your shadow and veil your eyes from states of ain soph aur.
Wrath
Profile Blog Joined July 2014
3174 Posts
Last Edited: 2016-10-05 04:51:31
October 05 2016 04:50 GMT
#15438
On October 04 2016 19:24 Manit0u wrote:
Let me also share something that really cracked me up:
https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f


That was interesting read and described my suffering to learn front-end development :D

This paragraph caught my interest:

No one does at the beginning. Look, you just need to know that functional programming is better than OOP and that’s what we should be using in 2016


Why?

I don't know what FP is, I'll do some research on it but I never thought that OOP would become out dated one day. Is it really on a decline?
Djagulingu
Profile Blog Joined December 2010
Germany3605 Posts
October 05 2016 05:56 GMT
#15439
On October 05 2016 13:50 Wrath wrote:
Show nested quote +
On October 04 2016 19:24 Manit0u wrote:
Let me also share something that really cracked me up:
https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f


That was interesting read and described my suffering to learn front-end development :D

This paragraph caught my interest:

Show nested quote +
No one does at the beginning. Look, you just need to know that functional programming is better than OOP and that’s what we should be using in 2016


Why?

I don't know what FP is, I'll do some research on it but I never thought that OOP would become out dated one day. Is it really on a decline?

OOP can get really shitty really fast with all those objects rollin around and shit. FP, in my really subjective and personal opinion, yields a much more readable and maintainable codebase.

Simple FP example:

"Load the data" -> "Do this shit on the data" -> "Do that shit on the data" -> "Do the other shit on the data" -> "Store the data"

As you know exactly what this shit, that shit or the other shit is, you can maintain your code a whole lot easier.
"windows bash is a steaming heap of shit" tofucake
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
October 05 2016 06:01 GMT
#15440
On October 05 2016 13:50 Wrath wrote:
Show nested quote +
On October 04 2016 19:24 Manit0u wrote:
Let me also share something that really cracked me up:
https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f


That was interesting read and described my suffering to learn front-end development :D

This paragraph caught my interest:

Show nested quote +
No one does at the beginning. Look, you just need to know that functional programming is better than OOP and that’s what we should be using in 2016


Why?

I don't know what FP is, I'll do some research on it but I never thought that OOP would become out dated one day. Is it really on a decline?


OOP as such is not on a decline since it's still very useful. However, pretty much all OOP languages these days, from C++ to PHP to Java, include a bit of functional programming in the form of lambdas, since those make a lot of stuff easier. There won't be a switch to full functional programming because functional programming has it's own flaws, but modern programming is a mix of both.

For example, taking something from my own Java refresher project:

The functional way:
technologies.addAll(getGameModel().getTechnologies().filterAll(t -> t.hasDependencies(faction) && !faction.hasTechnology(t)));


The OOP way:
for (Technology tech : getGameModel().getTechnologies())
{
if (tech.hasDependencies(faction) && !faction.hasTechnology(tech))
{
technologies.add(tech);
}
}


Both do the same thing, but the functional way is more concise and actually more readable once you get used to the syntax. Of course you can hide the loops in methods to make them more readable but then that method is long and ugly compared to a single lambda.

In addition to being easier to read, it can also make multithreaded programming easier, because lambdas can be executed in parallel unless you make them change outside state, which you shouldn't, and programming languages like C# and Java can almost automatically turn your code into multithreaded code.

Singlethreaded:
allEntities.stream().filter(e -> e.getType() == StarSystemEntityType.PLANET).collect(Collectors.toList());


Multithreaded:
allEntities.stream().parallel().filter(e -> e.getType() == StarSystemEntityType.PLANET).collect(Collectors.toList());


Of course that way you don't have a lot of control over the multithreading since it happens behind the scenes, but it's an easy way to optimize the processing of large lists on multicore systems and modern compilers tend to be smarter than the programmers using them anyways.

The future is neither OOP nor Functional, it's a good mix of the best parts of both.
Prev 1 770 771 772 773 774 1032 Next
Please log in or register to reply.
Live Events Refresh
The PondCast
10:00
Episode 75
CranKy Ducklings20
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
WinterStarcraft488
SortOf 200
StarCraft: Brood War
Sea 4866
Bisu 1387
Hyuk 783
Leta 405
Sharp 240
Mini 238
Hyun 109
Rush 108
ZerO 89
Light 80
[ Show more ]
ToSsGirL 60
Killer 59
ggaemo 53
hero 50
Last 48
Mind 44
sorry 36
Shine 26
Sacsri 25
JYJ 22
soO 21
NaDa 20
910 19
HiyA 9
Terrorterran 2
Dota 2
Fuzer 152
XcaliburYe102
League of Legends
C9.Mang0330
Counter-Strike
olofmeister1265
shoxiejesuss661
Other Games
summit1g9613
singsing1724
B2W.Neo373
XaKoH 172
Mew2King77
ToD39
Dewaltoss21
Organizations
Other Games
gamesdonequick686
StarCraft: Brood War
Kim Chul Min (afreeca) 557
lovetv 2
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 15 non-featured ]
StarCraft 2
• Berry_CruncH234
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• iopq 4
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• lizZardDota256
League of Legends
• Jankos1442
• HappyZerGling144
Upcoming Events
WardiTV 2025
1h 40m
StarCraft2.fi
6h 40m
WardiTV 2025
1d 1h
RSL Revival
1d 18h
StarCraft2.fi
1d 23h
IPSL
2 days
Sziky vs JDConan
RSL Revival
2 days
Classic vs TBD
herO vs Zoun
WardiTV 2025
3 days
IPSL
3 days
Tarson vs DragOn
Wardi Open
4 days
[ Show More ]
Monday Night Weeklies
4 days
Replay Cast
4 days
Sparkling Tuna Cup
4 days
The PondCast
6 days
Liquipedia Results

Completed

Acropolis #4 - TS3
RSL Revival: Season 3
Kuram Kup

Ongoing

IPSL Winter 2025-26
KCM Race Survival 2025 Season 4
YSL S2
BSL Season 21
Slon Tour Season 2
WardiTV 2025
META Madness #9
SL Budapest Major 2025
ESL Impact League Season 8
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025
Thunderpick World Champ.
CS Asia Championships 2025
ESL Pro League S22

Upcoming

BSL 21 Non-Korean Championship
Acropolis #4
IPSL Spring 2026
Bellum Gens Elite Stara Zagora 2026
HSC XXVIII
Big Gabe Cup #3
RSL Offline Finals
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
eXTREMESLAND 2025
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 © 2025 TLnet. All Rights Reserved.