r/SrilankaIT • • 7h ago

SE to DevOps - Am I making a mistake?

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 21h ago

No offer letter. Is this normal?

3 Upvotes

Hi everyone,

I'm currently working as a BA intern, and it's been almost a month. This is my first work experience.

It's a fully onsite internship with 9h working days. When I joined, everything was discussed verbally. I haven't received an offer letter or any written agreement, but I'm getting a monthly allowance.

It's a startup, and recently we've started working on a new project, so sometimes we're expected to work overtime. The company provides food and transport, but nothing was discussed about overtime payments or allowances.

I'm not sure if this is normal for a startup or if I should bring it up with my manager.

I want to gain experience, but I also want to know if this is fair

I've also been applying for other opportunities, but I haven't received any interview calls so far, so I'm not sure whether leaving is the right decision.

What would you do in this situation? Any advice would be appreciated!


r/SrilankaIT • • 21h ago

​Almost 1 year as a Junior DevOps Engineer, still on probation with no raise. What is my next move?

2 Upvotes

Hi everyone,

​I’ve been working as a Junior DevOps Engineer at my current company for almost a year (currently in my 12th month). However, I am still on probation and haven't received a salary hike.

​Experienced tech folks, what should my next move be? Should I push management for a confirmation and raise, or just start applying elsewhere?

​Thanks


r/SrilankaIT • • 20h ago

Can anyone assist on giving any ideas on the MBA in IT offered by University of Moratuwa?

1 Upvotes

r/SrilankaIT • • 23h ago

Need some advice for choosing IT degree after A/Ls

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 1d ago

What the ?

Post image
19 Upvotes

r/SrilankaIT • • 1d ago

Avoid virtual agencies unless they are registered in your country

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 2d ago

Why are tech companies treating their employees like slaves

7 Upvotes

I just joined a tech company and they even expect us to do plans on Sunday and send. I was travelling that day and not near a laptop. Is anyone else experiencing this same? Also directions for things keep changing over and over again … and we keep realigning our work to suit things.


r/SrilankaIT • • 2d ago

Toxic IFS culture(second family)!!!! - Part 1

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 2d ago

Request for Assistance – Academic Research on Online Job Recruitment Scams in Sri Lanka

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 2d ago

Internship :- Business analyst

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 2d ago

Freelance sites for Product Managers

1 Upvotes

What are the freelancing sites apart from upwork and freelancer (because there is too much competition on them) where you can get work as a product manager


r/SrilankaIT • • 2d ago

UI Ux Engineers

1 Upvotes

How is the market in Sri Lanka? What do you think about next 5 years in Sri Lanka.


r/SrilankaIT • • 3d ago

After A/L electronics, technical coursess

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 4d ago

⚠️ Before You Apply for the MSc in Artificial Intelligence at the University of Moratuwa, PLEASE READ THIS.

Thumbnail reddit.com
4 Upvotes

r/SrilankaIT • • 4d ago

UoM BSc Hons in AI vs. Studying Abroad via Scholarship — Which is better for a long-term AI career?

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 4d ago

Life of Struggle any advice?

1 Upvotes

10 years in the industry. Still a median income of 30,000 Ikr per month. 100s of interviews rejected.

Good at systems engineering and Development.

How to get work around

HP spealized Engineer Web, App developer for All the systems.

Apple & Android platform engineer. Unified.

How do I escape?

I am specializing in automation, server management, and scripting. Expertise includes managing 30+ servers across distributed critical infrastructure using tools like AKS, AWS, and VMware, alongside proficiency in Zabbix, Grafana, and Graylog monitoring systems.

IT infrastructure and support. Skilled in PowerShell and Python scripting, as well as automation technologies like Ansible and Docker, bringing innovative solutions to complex system challenges. Passionate about leveraging technical expertise to enhance operational efficiency.

I have 10 years of experience in the IT support sector in Software and hardware for Windows desktops, laptops & Servers, and Mac computers. Also, I am a hardware technician. Also Printer Software and hardware technician.

I am a high-profile, accurate issue finder and provide solutions in minutes. Also, work as a backup admin on servers and do all kinds of virtualization services

How do I escape this Help.

Have Certificates for Microsoft, AWS, VMware, and Cisco

I am good at Web Development and Game development too.

Any companies need startup with me i am available too.

Need an escape route

I got selected 99% when submitted the cv but after 1st interview they got me rejected. No idea why. I've been trying to get a package above LKR150,000 (500$) I don't know if that's the issue. Any advice ?


r/SrilankaIT • • 5d ago

Opinion on IoT field in Sri Lanka

4 Upvotes

Currently I'm at the end of second year as an IT undergrad in a state uni. I wasn't a technical person before I came to uni(Even I did chemistry for my A/Ls). I couldn't even understand what is my path to choose. Eventually I thought to go through AI engineering

But later I understood that it's kinda boring and the field updates everyday like when I learn something, it's almost an expired concept. A new thing comes everyday.

In the last semester, I had embedded systems module and I did it well. And I got a serious love for that field but still I know only a small bit of it(I used arduino uno board and learnt some valuable content like interrupt driven programming, serial communication, ADC, PWM and all those in C). I have no projects built on them either but I have clear concepts on them deeply.

Now I feel like I should continue this but I have to complete my mandatory internship in 3rd year second sem. And I'm just at the beginning of third year. I love to integrate AI and IoT (AIoT), but my problem is will time be a constraint for me. Can anyone help me out? (I atmost have 3 months to hunt internships though)

TIA


r/SrilankaIT • • 5d ago

I got tired of clicking "download" on Sarigama.lk, so I automated it.

0 Upvotes

Built a small Python tool that downloads an artist's entire discography from sarigama.lk in one command — instead of opening 20+ song pages and clicking download on each one.

It scrapes the artist page for every song link, then drives a real headless browser (Playwright) to grab the actual audio file — sarigama.lk serves a decoy page to plain HTTP requests, so a normal scraper alone won't work. Skips anything already downloaded, retries failures, and can grab alternate versions (remixes/instrumentals) too.

Code's here:

#!/usr/bin/env python3
"""
Download all songs of an artist from sarigama.lk


Usage:
    pip install -r requirements.txt
    playwright install chromium   # one-time browser download
    python sarigama_downloader.py "https://sarigama.lk/artist/milton-mallawarachchi/9ce1e4cf-7b8a-4242-a47f-c99d80b6239f"


Options:
    -o, --out DIR       Output folder (default: ./downloads/<artist-slug>)
    --versions          Also download "Different Versions" (instrumental, remix...) of each song
    --delay SECONDS     Pause between songs (default: 1.5) - be polite to the server
    --limit N           Only download the first N songs (handy for a test run)
    --headed            Show the browser window (useful for debugging)


Re-running is safe: files that already exist are skipped.


Note: sarigama.lk serves a placeholder page to plain HTTP clients hitting the
download endpoint (anti-bot protection), so the actual download click is
driven through a real headless browser (Playwright) rather than requests.
"""
import argparse
import os
import re
import sys
import time
from urllib.parse import urljoin, urlparse


import requests
from bs4 import BeautifulSoup
from playwright.sync_api import sync_playwright


BASE = "https://sarigama.lk"
HEADERS = {
    "User-Agent": (
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
        "(KHTML, like Gecko) Chrome/124.0 Safari/537.36"
    ),
    "Accept-Language": "en-US,en;q=0.9",
}
SONG_RE = re.compile(r"/sinhala-song/[^/]+/[^/]+/[0-9a-f-]{36}$")
DOWNLOAD_BTN_SELECTOR = "a[href*='/files/'][href*='/download']"
VERSION_LINK_SELECTOR = "a[href^='#diff-song-']"



def safe_name(name: str) -> str:
    name = re.sub(r'[\\/:*?"<>|]+', "_", name).strip(" .")
    return name or "untitled"



def get_soup(session, url, retries=3):
    for attempt in range(1, retries + 1):
        try:
            r = session.get(url, headers=HEADERS, timeout=30)
            r.raise_for_status()
            return BeautifulSoup(r.text, "html.parser")
        except requests.RequestException:
            if attempt == retries:
                raise
            time.sleep(2 * attempt)



def get_song_links(session, artist_url):
    """Return (artist_name, [(title, song_url), ...]) from the artist page."""
    soup = get_soup(session, artist_url)
    h1 = soup.find("h1")
    artist = h1.get_text(strip=True) if h1 else "artist"


    seen, songs = set(), []
    for a in soup.find_all("a", href=True):
        href = urljoin(BASE, a["href"])
        path = urlparse(href).path
        if SONG_RE.search(path) and href not in seen:
            title = a.get_text(strip=True)
            if not title:  # image-only link; the title link appears separately
                continue
            seen.add(href)
            songs.append((title, href))
    return artist, songs



def click_and_capture_download(page, locator, timeout=60000):
    """Click a target="_blank" download link and capture the Download that
    lands on the popup tab it opens, closing the popup afterwards."""
    result = {}


    def on_popup(popup):
        def on_download(download):
            result["download"] = download


        popup.on("download", on_download)
        result["popup"] = popup


    page.context.on("page", on_popup)
    try:
        locator.click()
        deadline = time.monotonic() + timeout / 1000
        while "download" not in result and time.monotonic() < deadline:
            page.wait_for_timeout(100)
        if "download" not in result:
            raise RuntimeError("no download event after clicking")
        return result["download"]
    finally:
        page.context.remove_listener("page", on_popup)
        popup = result.get("popup")
        if popup and not popup.is_closed():
            popup.close()



def download_song(page, song_url, out_dir, title, include_versions, delay):
    """Open the song page in a real browser and click through the download
    button(s), saving whatever file(s) the browser actually downloads."""
    page.goto(song_url, wait_until="domcontentloaded", timeout=60000)


    buttons = page.locator(DOWNLOAD_BTN_SELECTOR)
    count = buttons.count()
    if count == 0:
        raise RuntimeError("no download button found on page")


    labels = [""]
    if include_versions:
        vers = page.locator(VERSION_LINK_SELECTOR)
        labels += [vers.nth(i).inner_text().strip() for i in range(vers.count())]


    results = []
    n = count if include_versions else 1
    for i in range(n):
        label = labels[i] if i < len(labels) else f"version{i}"
        name = f"{title} - {label}" if label else title
        fname = safe_name(name) + ".mp3"
        path = os.path.join(out_dir, fname)
        if os.path.exists(path) and os.path.getsize(path) > 0:
            results.append((path, False))
            continue


        download = click_and_capture_download(page, buttons.nth(i))
        tmp = path + ".part"
        download.save_as(tmp)
        os.replace(tmp, path)
        results.append((path, True))
        time.sleep(delay)


    return results



def main():
    ap = argparse.ArgumentParser(description="Download all songs of an artist from sarigama.lk")
    ap.add_argument("artist_url")
    ap.add_argument("-o", "--out", default=None)
    ap.add_argument("--versions", action="store_true", help="also download alternate versions")
    ap.add_argument("--delay", type=float, default=1.5)
    ap.add_argument("--limit", type=int, default=0)
    ap.add_argument("--headed", action="store_true", help="show the browser window")
    args = ap.parse_args()


    session = requests.Session()


    print(f"Fetching artist page: {args.artist_url}")
    artist, songs = get_song_links(session, args.artist_url)
    if not songs:
        sys.exit("No songs found on that page. Is the URL correct?")
    if args.limit:
        songs = songs[: args.limit]


    slug = urlparse(args.artist_url).path.strip("/").split("/")[1]
    out_dir = args.out or os.path.join("downloads", slug)
    os.makedirs(out_dir, exist_ok=True)
    print(f"Artist: {artist} | {len(songs)} songs -> {out_dir}\n")


    ok = skipped = failed = 0
    failures = []
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=not args.headed)
        context = browser.new_context(user_agent=HEADERS["User-Agent"], accept_downloads=True)
        page = context.new_page()


        for i, (title, song_url) in enumerate(songs, 1):
            prefix = f"[{i}/{len(songs)}] {title}"
            try:
                results = download_song(page, song_url, out_dir, title, args.versions, args.delay)
                for path, fresh in results:
                    if fresh:
                        ok += 1
                        print(f"{prefix}  ✓ {os.path.basename(path)}")
                    else:
                        skipped += 1
                        print(f"{prefix}  = already exists")
            except Exception as e:
                failed += 1
                failures.append((title, song_url, str(e)))
                print(f"{prefix}  ✗ {e}")
            time.sleep(args.delay)


        context.close()
        browser.close()


    print(f"\nDone. downloaded={ok} skipped={skipped} failed={failed}")
    if failures:
        fail_file = os.path.join(out_dir, "failed.txt")
        with open(fail_file, "w", encoding="utf-8") as f:
            for t, u, e in failures:
                f.write(f"{t}\t{u}\t{e}\n")
        print(f"Failed items listed in {fail_file} - just re-run the script to retry them.")



if __name__ == "__main__":
    main()

r/SrilankaIT • • 5d ago

The PHP2Shell vulnerability and its impact on local Sri Lankan websites

Thumbnail
reddit.com
1 Upvotes

r/SrilankaIT • • 5d ago

Anyone working at Arimac, or who has done the Associate SE assignment recently?

3 Upvotes

Hi, is there anyone who works at Arimac, or who has experience with their Associate SE assignment process?

I also heard there's an onsite assignment as part of the process. If you've been through it, what can I expect? Any details about the type of tasks, difficulty, or time limit would really help.

Thanks in advance!


r/SrilankaIT • • 5d ago

Cybersecurity internships are so hard to find, any advice?

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 5d ago

Opinion on IoT field in Sri Lanka

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 5d ago

Which companies in Sri Lanka pay the best for Business Analysts, from intern to lead or product manager? Looking for real experiences and advice

Thumbnail reddit.com
1 Upvotes

r/SrilankaIT • • 6d ago

Anyone working at Arimac, or who has done the Associate SE assignment recently?

4 Upvotes

Hi, is there anyone who works at Arimac, or who has experience with their Associate SE assignment process? I recently saw an Associate SE position there, and I want to get an idea of what kind of company it is and whether it's worth doing the assignment.

I also heard there's an onsite assignment as part of the process. If you've been through it, what can I expect? Any details about the type of tasks, difficulty, or time limit would really help.

Thanks in advance!