Hakkımda

Bilişim teknolojileri tutkunu, yazılım geliştirici ve dijital stratejist

Merhaba, ben Ali Eren Bektaş! Full-stack geliştirici, bulut mimarisi uzmanı ve dijital stratejist olarak çalışıyorum.

2005 doğumlu olarak, erken yaşta bilişim teknolojilerine olan tutkum beni sektörde hızla ilerletmeye başladı. Yazılım geliştirme, bulut çözümleri ve dijital pazarlama alanlarında uzmanlaşırken, aynı zamanda girişimcilik ruhunu da taşıyorum.

Profesyonel kariyerimde, kurumsal çözümlerden başlayarak bağımsız projelere kadar geniş bir yelpazede deneyim kazandım. Modern web teknolojileri, bulut mimarisi (AWS, Azure), veri tabanı yönetimi ve dijital pazarlama stratejileri konularında uzmanlık sahibiyim.

Kendimi sürekli geliştirmeye ve teknolojik yenilikleri yakından takip etmeye özen gösteriyorum. LIN Game ve Essa Dijital gibi kendi girişimlerimle, dijital dünyada kalıcı ve yenilikçi ürünler oluşturmaya odaklanıyorum.

10+
Proje
5+
Başarılı İşbirliği
2
Patent
3+
Yıl Deneyim

Deneyim

Profesyonel kariyerimde edindiğim tecrübeler

E-Ticaret Teknoloji Uzmanı

Arcadia Bilişim
Eylül 2024 - Günümüz

E-ticaret platformlarının teknolojik altyapılarının optimizasyonu ve geliştirmesinde uzmanlaştım. Ürün takip sistemleri, entegrasyon API'leri ve satış optimizasyon araçları geliştirdim. Müşterilerin online satış süreçlerini A/B testleri ile sürekli optimize ederek, dönüşüm oranlarında ortalama %25 artış sağladım.

Kurucu & Başkan

Essa Dijital
Temmuz 2024 - Günümüz

Dijital pazarlama ve teknoloji çözümleri sunan Essa Dijital'i kurdum. Ekip yönetimi, stratejik planlama ve müşteri ilişkileri yönetiminden sorumluyum. Müşterilerimize özel SEO stratejileri, reklam kampanyaları ve analitik raporlar oluşturarak, dijital varlıklarının büyümesine katkı sağlıyorum.

Yazılım Ekip Koordinatörü

Bab Software
Eylül 2023 - Temmuz 2024

Yazılım ekibini koordine ederek, çeşitli otomasyon çözümleri geliştirdim. Agile metodolojisi ile proje süreçlerini yöneterek, zamanında ve bütçe dahilinde teslimat sağladım. Microservice mimarisi ile ölçeklenebilir sistemler tasarlayarak, işletim maliyetlerini %30 oranında düşürdüm.

Kurucu

Dijital Yorum Kartı
Eylül 2023 - Günümüz

İşletmeler için yenilikçi bir müşteri geri bildirim platformu geliştirdim. QR kod tabanlı teknoloji ile işletmelerin anlık müşteri memnuniyetini ölçmelerini sağlayan sistem, veri analitiği ile işletmelere değerli iç görüler sunuyor. Platform, ilk yılında 50+ işletme tarafından kullanılmaya başlandı.

Freelance Yazılım Geliştirici

Bağımsız
Temmuz 2022 - Eylül 2023

Çeşitli sektörlerde faaliyet gösteren müşteriler için özel yazılım çözümleri ve e-ticaret platformları geliştirdim. Modern teknoloji stack'leri kullanarak (React, Node.js, Python), performans odaklı ve ölçeklenebilir sistemler tasarladım. Proje yönetimi, geliştirme ve müşteri ilişkileri konusunda değerli deneyimler edindiğim bir dönem oldu.

Kurucu & Teknoloji Lideri

LIN Game
Temmuz 2022 - Günümüz

Oyun geliştirme stüdyosu LIN Game'i kurduk. Teknoloji liderliği yaparak, oyun mimarisi, performans optimizasyonu ve platform entegrasyonları konularında çalışıyorum. Unity ve Unreal Engine kullanarak, mobil ve PC platformları için oyunlar geliştiriyoruz. İlk yayınladığımız indie oyun, 10,000+ indirme sayısına ulaştı.

Teknik Yetkinlikler

Bilgi ve deneyim sahibi olduğum teknolojiler ve platformlar

Programlama Dilleri

Python
Uzman
PHP
Uzman
JavaScript
İleri
C#
İleri
Java
Orta

Bulut & DevOps

Amazon Web Services
İleri
Microsoft Azure
İleri
Docker
İleri
CI/CD Pipeline
Orta
Microservices
Orta

Veritabanı

MySQL / MariaDB
Uzman
PostgreSQL
İleri
MongoDB
Orta
Firebase
İleri
Redis
Orta

Frontend

HTML5
Uzman
CSS3 / SASS
Uzman
React
İleri
Vue.js
Orta
Bootstrap / Tailwind
Uzman

Dijital Pazarlama

Google Ads
Uzman
Meta Ads
Uzman
SEO
İleri
Analytics
İleri
Conversion Rate Optimization
İleri

Araçlar & Diğer

Git Version Control
Uzman
Jira / Agile
İleri
Responsive Design
Uzman
UI/UX Design
Orta
Web Security
İleri

Uzmanlık Alanları

Uzmanlaştığım teknoloji ekosistemleri ve çözüm alanları

Modern Web Mimarisi

Microservices, serverless mimari ve modern frontend framework'leri ile ölçeklenebilir, performanslı ve güvenli web uygulamaları geliştiriyorum.

React Node.js GraphQL Next.js TypeScript
Performans Odaklı

Bulut Mimarisi & DevOps

AWS ve Azure üzerinde otomatik ölçeklenen, yüksek erişilebilirliğe sahip ve maliyet optimizasyonu yapılmış bulut çözümleri tasarlıyorum.

AWS Azure Docker Kubernetes CI/CD
Güvenlik & Otomasyon

E-Ticaret Optimizasyonu

Dönüşüm odaklı e-ticaret platformları geliştiriyor, satış süreçlerini optimize ediyor ve analitik tabanlı büyüme stratejileri uyguluyorum.

WooCommerce Shopify Stripe A/B Testing Analytics
Dönüşüm Optimizasyonu

Veri Mimarisi & Analitik

Veritabanı optimizasyonu, veri modellemesi ve gerçek zamanlı analitik çözümler ile veri odaklı karar alma süreçlerini destekliyorum.

PostgreSQL MongoDB Redis Elasticsearch BigQuery
Performans & Ölçeklenebilirlik

Dijital Pazarlama & SEO

Veri odaklı dijital pazarlama stratejileri, konversiyon optimizasyonu ve organik büyüme için teknik SEO çözümleri geliştiriyorum.

Google Ads Meta Ads Google Analytics SEO CRO
ROI Optimizasyonu

Mobil Uygulama Geliştirme

Hem native hem de cross-platform teknolojilerle, yüksek performanslı ve kullanıcı odaklı mobil uygulamalar geliştiriyorum.

Flutter React Native Swift Kotlin Firebase
Kullanıcı Deneyimi

Code Snippet Showcase

Modern ve performanslı kod örneklerim

JavaScript
Python
PHP
performanceOptimizer.js Modern JavaScript
/** * Performance Optimization Module * @author Ali Eren Bektaş * @version 2.3.1 */ export class PerformanceOptimizer { constructor(config = {}) { this.metrics = { FCP: null, // First Contentful Paint LCP: null, // Largest Contentful Paint CLS: null, // Cumulative Layout Shift TTI: null, // Time to Interactive TBT: null // Total Blocking Time }; this.thresholds = { ...{ FCP: 1800, // 1.8s LCP: 2500, // 2.5s CLS: 0.1, // 0.1 TTI: 3800, // 3.8s TBT: 200 // 200ms }, ...config.thresholds }; this.listeners = []; this.isMonitoring = false; this.optimizations = { lazyLoading: config.lazyLoading ?? true, imageOptimization: config.imageOptimization ?? true, cssMinification: config.cssMinification ?? true, codeRazor: config.codeRazor ?? false }; // Initialize system this.init(); } init() { // Register performance observers if ('PerformanceObserver' in window) { this.registerFCPObserver(); this.registerLCPObserver(); this.registerCLSObserver(); this.registerLayoutShiftObserver(); console.info('Performance monitoring initialized successfully'); } else { console.warn('PerformanceObserver API not supported'); } // Apply optimizations if configured if (this.optimizations.lazyLoading) { this.enableLazyLoading(); } if (this.optimizations.imageOptimization) { this.optimizeImages(); } return this; } registerFCPObserver() { const fcpObserver = new PerformanceObserver(entries => { const fcpEntry = entries.getEntries().pop(); this.metrics.FCP = fcpEntry.startTime; this.evaluateMetric('FCP', fcpEntry.startTime); }); fcpObserver.observe({ type: 'paint', buffered: true }); } enableLazyLoading() { if ('loading' in HTMLImageElement.prototype) { document.querySelectorAll('img').forEach(img => { if (!img.loading) { img.loading = 'lazy'; } }); } else { // Fallback lazy loading implementation this.implementIntersectionObserver(); } } evaluatePerformance() { const scores = {}; let overallScore = 0; Object.entries(this.metrics).forEach(([metric, value]) => { if (value !== null) { const score = this.calculateScore(metric, value); scores[metric] = score; overallScore += score * this.getMetricWeight(metric); } }); return { scores, overall: Math.round(overallScore * 100) / 100, metrics: { ...this.metrics } }; } // Advanced optimization techniques would be implemented here }
data_processor.py Python 3
""" Advanced Data Processing Module Author: Ali Eren Bektaş Version: 1.4.2 """ import pandas as pd import numpy as np from typing import Dict, List, Optional, Union, Tuple from dataclasses import dataclass import logging from concurrent.futures import ThreadPoolExecutor from functools import lru_cache # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) @dataclass class ProcessingConfig: """Configuration parameters for the data processor""" batch_size: int = 10000 threads: int = 4 normalize: bool = True handle_missing: str = 'interpolate' # 'interpolate', 'drop', or 'fill' outlier_detection: bool = True cache_results: bool = True class DataProcessor: """ Advanced data processing and analysis class with optimization for large datasets and parallel processing capabilities. """ def __init__(self, config: Optional[ProcessingConfig] = None): """Initialize the processor with configuration""" self.config = config or ProcessingConfig() self.data = None self.metadata = {} logger.info(f"DataProcessor initialized with config: {self.config}") def load_data(self, source: Union[str, pd.DataFrame], **kwargs) -> pd.DataFrame: """Load data from various sources with error handling""" try: if isinstance(source, str): # File path handling if source.endswith('.csv'): self.data = pd.read_csv(source, **kwargs) elif source.endswith(('.xls', '.xlsx')): self.data = pd.read_excel(source, **kwargs) elif source.endswith('.json'): self.data = pd.read_json(source, **kwargs) elif source.endswith('.parquet'): self.data = pd.read_parquet(source, **kwargs) else: raise ValueError(f"Unsupported file format: {source}") else: # DataFrame directly provided self.data = source.copy() # Collect basic metadata self._collect_metadata() logger.info(f"Data loaded: {len(self.data)} rows, {len(self.data.columns)} columns") return self.data except Exception as e: logger.error(f"Error loading data: {str(e)}") raise def _collect_metadata(self) -> Dict: """Collect metadata about the dataset""" if self.data is None: return {} self.metadata = { 'shape': self.data.shape, 'columns': list(self.data.columns), 'dtypes': self.data.dtypes.to_dict(), 'missing_values': self.data.isnull().sum().to_dict(), 'memory_usage': self.data.memory_usage(deep=True).sum() } # Add numeric columns statistics numeric_cols = self.data.select_dtypes(include=['number']).columns if len(numeric_cols) > 0: self.metadata['numeric_stats'] = self.data[numeric_cols].describe().to_dict() return self.metadata @lru_cache(maxsize=32) def process_batch(self, batch_idx: int) -> pd.DataFrame: """Process a single batch of data with caching for performance""" start_idx = batch_idx * self.config.batch_size end_idx = min(start_idx + self.config.batch_size, len(self.data)) batch = self.data.iloc[start_idx:end_idx].copy() # Apply processing steps based on configuration if self.config.normalize: batch = self._normalize_batch(batch) if self.config.outlier_detection: batch = self._detect_outliers(batch) if self.config.handle_missing != 'drop': batch = self._handle_missing_values(batch) return batch def process(self) -> pd.DataFrame: """Process the entire dataset in parallel batches""" if self.data is None or len(self.data) == 0: logger.warning("No data to process") return pd.DataFrame() total_batches = (len(self.data) + self.config.batch_size - 1) // self.config.batch_size logger.info(f"Processing {total_batches} batches using {self.config.threads} threads") processed_data = [] with ThreadPoolExecutor(max_workers=self.config.threads) as executor: # Process batches in parallel futures = [executor.submit(self.process_batch, i) for i in range(total_batches)] for future in futures: processed_data.append(future.result()) # Combine processed batches result = pd.concat(processed_data, ignore_index=True) logger.info(f"Processing complete. Result shape: {result.shape}") return result
ApiService.php PHP 8.1
/** * Advanced API Service Implementation * * @author Ali Eren Bektaş * @version 3.1.0 */ declare(strict_types=1); namespace App\Services; use App\Contracts\ApiServiceInterface; use App\Exceptions\ApiException; use App\Models\ApiRequest; use App\Models\ApiResponse; use App\Repositories\CacheRepository; use App\ValueObjects\RequestParameters; use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; use Psr\Log\LoggerInterface; use Symfony\Component\HttpFoundation\Response; class ApiService implements ApiServiceInterface { // Default configuration options private array $defaultConfig = [ 'timeout' => 30, 'connect_timeout' => 10, 'http_errors' => true, 'verify' => true, 'headers' => [ 'Accept' => 'application/json', 'Content-Type' => 'application/json', ], ]; // Supported HTTP methods private const SUPPORTED_METHODS = [ 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS' ]; /** * @param Client $httpClient HTTP client for making requests * @param LoggerInterface $logger Logger service * @param CacheRepository $cache Cache repository for response caching * @param array $config Additional configuration options */ public function __construct( private readonly Client $httpClient, private readonly LoggerInterface $logger, private readonly CacheRepository $cache, private readonly array $config = [] ) { // Merge configuration with defaults $this->config = array_merge($this->defaultConfig, $config); } /** * Make an API request with advanced error handling and caching * * @param string $method HTTP method * @param string $endpoint API endpoint * @param RequestParameters $parameters Request parameters * @return ApiResponse The API response object * @throws ApiException If an error occurs during the request */ public function request( string $method, string $endpoint, RequestParameters $parameters ): ApiResponse { // Validate HTTP method $method = strtoupper($method); if (!in_array($method, self::SUPPORTED_METHODS, true)) { throw new ApiException( sprintf('Unsupported HTTP method: %s', $method), Response::HTTP_BAD_REQUEST ); } // Prepare request options $options = $this->prepareRequestOptions($parameters); // Generate cache key if caching is enabled $cacheKey = null; if ($parameters->shouldCache() && $method === 'GET') { $cacheKey = $this->generateCacheKey($method, $endpoint, $options); // Try to get from cache $cachedResponse = $this->cache->get($cacheKey); if ($cachedResponse !== null) { $this->logger->info('Retrieved response from cache', [ 'endpoint' => $endpoint, 'cache_key' => $cacheKey ]); return $cachedResponse; } } // Log the request $this->logger->info('Making API request', [ 'method' => $method, 'endpoint' => $endpoint, 'options' => array_diff_key($options, ['headers' => true]) ]); // Create request model for tracking $request = new ApiRequest( method: $method, url: $endpoint, parameters: $parameters ); try { // Make the HTTP request $startTime = microtime(true); $httpResponse = $this->httpClient->request($method, $endpoint, $options); $endTime = microtime(true); // Parse response body $body = $httpResponse->getBody()->getContents(); $statusCode = $httpResponse->getStatusCode(); $responseData = $this->parseResponseBody($body); // Create response object $response = new ApiResponse( statusCode: $statusCode, data: $responseData, headers: $httpResponse->getHeaders(), request: $request, executionTime: round(($endTime - $startTime) * 1000, 2) ); // Cache the response if requested if ($cacheKey !== null && $statusCode < 400) { $this->cache->set( $cacheKey, $response, $parameters->getCacheTtl() ); } return $response; } catch (GuzzleException $e) { $this->logger->error('API request failed', [ 'method' => $method, 'endpoint' => $endpoint, 'error' => $e->getMessage(), 'code' => $e->getCode() ]); throw new ApiException( sprintf('API request failed: %s', $e->getMessage()), $e->getCode() ?: Response::HTTP_BAD_GATEWAY, $e ); } } /** * Prepare request options from parameters * * @param RequestParameters $parameters * @return array */ private function prepareRequestOptions(RequestParameters $parameters): array { $options = $this->config; // Add query parameters if ($parameters->hasQueryParams()) { $options['query'] = $parameters->getQueryParams(); } // Add request body if ($parameters->hasBody()) { $options['json'] = $parameters->getBody(); } // Add custom headers if ($parameters->hasHeaders()) { $options['headers'] = array_merge( $options['headers'], $parameters->getHeaders() ); } // Add authentication if provided if ($parameters->hasAuthentication()) { $auth = $parameters->getAuthentication(); if (isset($auth['type']) && $auth['type'] === 'bearer') { $options['headers']['Authorization'] = 'Bearer ' . $auth['token']; } elseif (isset($auth['type']) && $auth['type'] === 'basic') { $options['auth'] = [$auth['username'], $auth['password']]; } } return $options; } /** * Parse response body based on content type * * @param string $body Response body * @return array|string Parsed response */ private function parseResponseBody(string $body): array|string { if (empty($body)) { return []; } try { $decoded = json_decode($body, true, 512, JSON_THROW_ON_ERROR); return is_array($decoded) ? $decoded : ['data' => $decoded]; } catch (\JsonException $e) { // Return raw body if it's not valid JSON return $body; } } /** * Generate a unique cache key for the request * * @param string $method HTTP method * @param string $endpoint API endpoint * @param array $options Request options * @return string Cache key */ private function generateCacheKey( string $method, string $endpoint, array $options ): string { // Create a stable representation of options for hashing $optionsJson = json_encode( array_intersect_key($options, ['query' => true]), JSON_THROW_ON_ERROR ); return md5($method . $endpoint . $optionsJson); } }

Referanslar

Müşteri ve iş ortaklarımın değerlendirmeleri

Ali Eren ile çalışmak gerçekten verimli bir deneyim oldu. Projemizin teknik zorluklarını hızla anlayıp, etkili çözümler üretti. Zamanında teslimat ve profesyonel yaklaşımı ile fark yarattı.

Daymonth Hotel
Genel Müdür

E-ticaret platformumuzun dönüşüm oranlarını artırmada gösterdiği başarı etkileyiciydi. Teknik bilgisi ve pazarlama anlayışını birleştirerek, bütünsel bir yaklaşım sundu.

Mimi Teknoloji
Pazarlama Direktörü

Dijital Yorum Kartı sisteminin işletmemize kattığı değer tartışılmaz. Müşteri memnuniyetimizi ölçme ve iyileştirme süreçlerimizi tamamen değiştirdi. Genç yaşına rağmen profesyonel yaklaşımı takdire şayan.

İn House Hotel
Müşteri İlişkileri

Yazılım ekibimizin koordinasyonunu üstlendiği dönemde, proje tamamlanma sürelerimiz %30 kısaldı. Teknik liderlik ve problem çözme becerilerini etkin bir şekilde gösterdi.

Bab Software
CTO

Reklam kampanyalarımızın yönetiminde gösterdiği analitik yaklaşım ve yaratıcı fikirler sayesinde, dijital pazarlama bütçemizden maksimum verim elde ettik.

Çelik Dükkanı
İşletme Sahibi

Web sitemizin yenilenmesi ve SEO çalışmaları sonucunda, organik trafiğimiz 3 kat arttı. Teknik bilgisi ve stratejik yaklaşımı ile projelerimize değer katıyor.

TAN Groups
Dijital Pazarlama Uzmanı

İletişim

Benimle iletişime geçin ve projenizi hayata geçirelim

İletişim Bilgileri

Konum
İstanbul, Türkiye
Çalışma Saatleri
Pazartesi - Cuma: 09:00 - 18:00

Mesaj Gönder