-
Recent Posts
- Poor Man’s LastFM History Downloader
- Aspect Oriented Programming Notes #4 – Proxy Mechanism
- Aspect Oriented Programming Notes #3 – Some Additional Info
- Aspect Oriented Programming Notes #2: Setting Up AOP Dependencies and Declaring Aspects, Advices, Pointcuts
- Aspect Oriented Programming Notes #1: The Concepts
Categories
- Days (4)
- Projects (6)
- Uncategorized (1)
- Works (17)
- Algorithm Analysis (3)
- General Concepts (4)
- Links (5)
- Software Architecture (2)
- Spring Framework (5)
Archives
- August 2021 (1)
- September 2020 (6)
- August 2020 (3)
- May 2020 (3)
- April 2020 (1)
- March 2020 (1)
- February 2020 (3)
- December 2019 (1)
- November 2019 (1)
- October 2019 (1)
- September 2019 (1)
- August 2019 (3)
Tab Overload #2

Book review: “Structure and Interpretation of Computer Programs” by Harold Abelson, Gerald Jay Sussman – Eli Bendersky’s website
I have the habit of writing reviews for the books I’ve read, and recently I noticed that something is missing. SICP. I’ve definitely read it, so I should probably write a review, eh ?

Semantic technology – Wikipedia
The ultimate goal of semantic technology is to help machines understand data. To enable the encoding of semantics with the data, well-known technologies are RDF (Resource Description Framework)[1] and OWL (Web Ontology Language).[2] These technologies formally represent the meaning involved in infor…

An Introduction to Task-Oriented Programming
Vehicles on Mars autonomously self-regulate, plan, and navigate using software
packaged up in millions of lines of C
[https://softwareengineering.stackexchange.com/questions/159637/what-is-the-mars-curiosity-rovers-software-built-in/159638#159638]
. Now, if hardware limitations were not a concern, w…
packaged up in millions of lines of C
[https://softwareengineering.stackexchange.com/questions/159637/what-is-the-mars-curiosity-rovers-software-built-in/159638#159638]
. Now, if hardware limitations were not a concern, w…

Understanding Functional Programming in Javascript — A Complete Guide
When it comes to programming paradigms, the most popular choice has been Object-Oriented Programming. It’s not difficult to find developers who can describe what a Class does or how to instantiate…

How Stephen Shore’s Photographs Inspired Netflix’s Mindhunter
Mindhunter cinematographer Erik Messerschmidt talks through the iconic 1970s photographs that inspired him and director David Fincher.

Playlist for Prefab Houses: YouTube and the Revitalization of Japanese Ambient Music
Liz Pelly’s recent article for The Baffler, “The Problem with Muzak,” bemoans music journalism’s embrace of Spotify. Algorithmically fueled, mood-based playlists such as “Ambient Chill,” she argues, are nothing more than “emotional wallpaper” for the distracted, disengaged masses.
15 Sorting Algorithms
Visualization and “audibilization” of 15 Sorting Algorithms in 6 Minutes.
Posted in Algorithm Analysis
Tagged Audibilization, Data Structures and Algorithms, Sorting, Visualization
Leave a comment
Tab Overload #1

An introduction to generic types in Java: covariance and contravariance
by Fabian Terh An introduction to generic types in Java: covariance and contravariance
Types
Java is a statically typed language, which means you must first declare a
variable and its type before using it. For example: int myInteger = 42; Enter generic types. Generic types
Definition [https://docs.oracle.com/javase/tutorial/java/generics/types.html…
Types
Java is a statically typed language, which means you must first declare a
variable and its type before using it. For example: int myInteger = 42; Enter generic types. Generic types
Definition [https://docs.oracle.com/javase/tutorial/java/generics/types.html…
Noosphere – Wikipedia
The noosphere is a philosophical concept developed and popularized by the French philosopher and Jesuit priest Pierre Teilhard de Chardin and the biogeochemist Vladimir Vernadsky. Vernadsky defined the noosphere as the new state of the biosphere[1] and described as the planetary “sphere of reason”.[…
Strong and weak typing – Wikipedia
In computer programming, programming languages are often colloquially classified as to whether the language’s type system makes it strongly typed or weakly typed (loosely typed).
Type system – Wikipedia
This article is about type systems from the point-of-view of computer programming. For a theoretical formulation, see type theory.
Programming paradigm – Wikipedia
This article is about classification of programming languages. For definition of the term “programming model”, see Programming model.
Functional programming – Wikipedia
In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data. It is a declarative programming paradigm in that p…
Type conversion – Wikipedia
In computer science, type conversion,[1][2] type casting,[1][3] type coercion,[3][3] and type juggling[4][5] are different ways of changing an expression from one data type to another. An example would be the conversion of an integer value into a floating point value or its textual representation as…
Polymorphism
Ad hoc polymorphism: defines a common interface for an arbitrary set of individually specified types.
Parametric polymorphism: when one or more types are not specified by name but by abstract symbols that can represent any type.
Subtyping (also called subtype polymorphism or inclusion polymorphism): when a name denotes instances of many different classes related by some common superclass.[3]
Parametric polymorphism: when one or more types are not specified by name but by abstract symbols that can represent any type.
Subtyping (also called subtype polymorphism or inclusion polymorphism): when a name denotes instances of many different classes related by some common superclass.[3]
Parametric polymorphism – Wikipedia
Parametric polymorphism is a way to make a language more expressive, while still maintaining full static type-safety. Using parametric polymorphism, a function or a data type can be written generically so that it can handle values identically without dependi…
Subtyping – Wikipedia
(also subtype polymorphism or inclusion polymorphism) is a form of type polymorphism in which a subtype is a datatype that is related to another datatype (the supertype) by some notion of substitutability, meaning that program elements, typically subroutines…
Covariance and contravariance
Many programming language type systems support subtyping. Variance refers to how subtyping between more complex types relates to subtyping between their components. Depending on the variance of the type constructor, the subtyping relation of the simple types may be either preserved, reversed, or ignored for the respective complex types.
Data Structures and Algorithm #1 Merge Sort
Bugün yaptığım şey, seçtiğim bir sıralama algoritmasını incelemek oldu. Merge Sort’u baştan sona incelemek birçok şeyi hatırlamak için iyi bir karardı sanırım. Java için temel syntaxlar, main memory ve recursion başlıklarının üstünden geçtim. Head Recursion için 2 ayrı örnek üzerinde durdum, ancak çok temel olduklarından burada yalnızca bir tanesine görsel olarak yer vereceğim. Bunlar dışında algoritmanın teorisini ve implementasyonunu incelerken kalem kağıtla neleri not aldığım da burada. Time complexity analysis notlarını daha sonra Latex ile aktaracağım.
İncelediğim merge sort algoritması:
public class Main {
public static void main(String[] args) {
int[] intArray = { 20, 35, -15, 7, 55, 1, -22 };
mergeSort(intArray, 0, intArray.length);
for (int i = 0; i < intArray.length; i++) {
System.out.println(intArray[i]);
}
}
// { 20, 35, -15, 7, 55, 1, -22 }
public static void mergeSort(int[] input, int start, int end) {
if (end - start < 2) {
return;
}
int mid = (start + end) / 2;
mergeSort(input, start, mid);
mergeSort(input, mid, end);
merge(input, start, mid, end);
}
// { 20, 35, -15, 7, 55, 1, -22 }
public static void merge(int[] input, int start, int mid, int end) {
if (input[mid - 1] <= input[mid]) {
return;
}
int i = start;
int j = mid;
int tempIndex = 0;
int[] temp = new int[end - start];
while (i < mid && j < end) {
temp[tempIndex++] = input[i] <= input[j] ? input[i++] : input[j++];
}
System.arraycopy(input, i, input, start + tempIndex, mid - i);
System.arraycopy(temp, 0, input, start, tempIndex);
}
}
Time complexity analysis:

- Not in-place
- Stable
Posted in Algorithm Analysis
Tagged Data Structures and Algorithms, Java, Merge Sort, Recursion
Leave a comment
Hello world!
Ormanda yolunu kaybeden, bir noktada durur, o nokta mihenk noktasıdır ve o mihenk noktası etrafında yürüyerek gittikçe büyüyen ve iç içe geçen daireler çizer, dairelerden biri mutlaka kaybedilen yolla kesişecektir. Şimdi yaptığım belki de bu. Zaman kaybedeceğim ama bana ait olanı bulacağım, kesin olarak bildiğim tek şey zorlu sürecimin beklediği. 8 ay boyunca küçük bir firmada Teknik Servis Mühendisliği yaptım ve bu işten kısaca nefret ettim, iş pek de bana göre değilmiş. Yolumu kaybettiğimi anlamam 8 ay sonraya denk geldi. İş bulmanın zaten başlı başına bir zorluk olması belki beni orada tuttu, halbuki orada olmam için aslında pek de geçerli bir neden yoktu. İnsanın yaptığı işten nefret etmesi gerçekten berbat şey, her sabah ayakları sürüye sürüye gitmek, ama yine de ve her şeye rağmen tüm zamanın ve enerjinle işi hakkını vererek yapmak ve içten içe duyulan memnuniyetsizliği etrafa sezdirmemek epey yıpratıcı bir süreç. Eğer bütün bunlar insanın kendisini daha iyi tanımasını sağlıyorsa, eğer gerçekten böyleyse bunları yaşamaya değer. Peki nedir anladığım, yani tam olarak nasıl bir işte çalışmalı, nasıl olmalı ki insan kendi iç dünyası ve yapısıyla çelişmesin; benliği zorlamadan, kişi için -mış gibi yapmadan verimli, istekli, sürekli olan yol nedir? Şimdi kendi adıma net şekilde görmekteyim ki eğer yapılan iş üzerinde detaylı ve uzun süreli düşünülüyorsa, bu iş analitik düşünce pratiği ve yaratıcılık gerektiriyorsa, insan faktörü olabildiğince azsa, evet orası benim yerim. Bu herhangi bir tasarım süreci de olabilirdi ama görece kısa süreli ve epey severek içinde olduğum bir yazılım eğitimi geçmişim ve tecrübem var. Yol orası. Gelişim sürecinde ne yapıp ne yapmamam gerektiğini biliyorum. Bu mecra kendimi disipline etmek, eksikleri görmek gibi son derece kişisel amaçlar adına atılmış bir adımdan başka şey değil. Her hayat kendine özgü, kural çıkarmak, başkalarına bakıp umutlanmak ya da umutsuzluğa düşmek yanlış. Artık iç içe ve giderek büyüyen daireler çizmeye başlayabilirim.
Posted in Gulliver
Leave a comment