• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Programming |OT| C is better than C++! No, C++ is better than C

Bollocks

Member
I want to write a function in C or Javascript that takes as an argument two arrays and returns true if the second array is contained in the first (for example array1[1,2,3,4,5] array2[1,3,4,] would return true), false if isn't.
I think i have to run a double for cycle but i'm not really sure how to set the condition, am i missing some built-in function that allows me to check how many elements are contained in an array?

edit: wait, i probably just have to use struct node.

in C assuming that you want to check if a certain array follows a pattern:
untested but should give you an idea
memcmp compares 2 blocks of memory, returns 0 if equal

bool compare(const void* array1, const void* array2, int len_arr1, int len_arr2)
{
for(int i=0; i<len_arr1-len_arr2; i++)
if(!memcmp(array1, array2, len_arr2))
return true;

return false;
}
 

tokkun

Member
What about good text editors?

I would suggest that you just learn vim or emacs. Just in terms of base capabilities, something like Sublime Text is better, but vim and emacs have the major advantage of being the defacto standard text editors. When you go to a new company, odds are they'll have support documentation and custom config files for using those programs with whatever proprietary infrastructure they run.
 

Slavik81

Member
code-blocks is best to display code
Code:
class MyClass
{
    MyClass()
    {
         Console.WriteLine("Like this!");
    }
}

For a second, I thought this was C++ and that you were going to have horrifying errors for forgetting the semi-colon at the end of MyClass.
 

gblues

Banned
I want to write a function in C or Javascript that takes as an argument two arrays and returns true if the second array is contained in the first (for example array1[1,2,3,4,5] array2[1,3,4,] would return true), false if isn't.
I think i have to run a double for cycle but i'm not really sure how to set the condition, am i missing some built-in function that allows me to check how many elements are contained in an array?

edit: wait, i probably just have to use struct node.

C arrays are just a pointer in memory, so there is no way to know how many elements are in a given array. You're on the right track with a struct design. You would create a struct to hold pointers to your arrays and the array sizes, like this:
Code:
struct _subset {
   int *a;
   unsigned int a_len;
   int *b;
   unsigned int b_len;
};

Then your function is going to be something like:

Code:
// return 1 if a is a subset of b, 0 otherwise
int isSubset(struct _subset *s)
{
  int i, j;

  if (s == NULL || s->a == NULL || s->b == NULL) return 0; // invalid compare object
  if( s->a_len > s->b_len) return false; // if |a| > |b|, by pigeonhole principle a cannot be subset of b

  for(i = 0; i < s->a_len; i++)
  {
    for(j = 0; j < s->b_len; j++)
    {
      if(s->a[i] == s->b[j]) break;
    }
    if(j == s->b_len) return 0; // element of a not found in b => not a subset
  }
  
  return 1; // all elements of a are in b => is a subset
}

Note that there are faster ways to do this if the arrays are sorted.
 

Slavik81

Member
Yeah, it's really just a personal preference thing. I can see liking all those features, but I always just feel that it slows me down more often than not. I like some autocomplete, but not very much, and little else besides that. So, lately my "editor" of choice is Sublime Text, which isn't an IDE at all, it's just a really nice text editor with some code highlighting and some light autocompletion.

Whatever works for you, is what I say.
In a large code base, VAX's Find References is a godsend. It's better than just a regular text-based find (though it still does have some false positives). I have more than a few complaints about Visual Studio, but it seems to be unmatched for those sorts of features.

If VAX didn't exist, I'd drop Visual Studio in a heartbeat, but the code navigation and refactoring tools keep me with it. Mainly Go-To-Symbol-Under-Cursor, Find-References, Rename, Extract Method, and Create From Usage and the amazingly fast Open File In Solution.

Admittedly, some of my coworkers use gvim or emacs. I honestly don't know how they do it. I suppose they write a LOT of user scripts.

Though, with all the praise I'm seeing for Sublime, I think I have to give it a try. I downloaded an evaluation copy and I already like a few things about it. For instance, that it uses python for its scripting (VB.net can die in a fire).

I would suggest that you just learn vim or emacs. Just in terms of base capabilities, something like Sublime Text is better, but vim and emacs have the major advantage of being the defacto standard text editors. When you go to a new company, odds are they'll have support documentation and custom config files for using those programs with whatever proprietary infrastructure they run.

Is it really a good idea to learn both C++ and the basics of one of those editors at the same time? Both are pretty tough to learn on their own. As much as I like vi for command-line editing, there's a pretty steep learning curve.
 

tokkun

Member
Is it really a good idea to learn both C++ and the basics of one of those editors at the same time? Both are pretty tough to learn on their own. As much as I like vi for command-line editing, there's a pretty steep learning curve.

You can learn vim at your own pace. If you want, you can use vim as a simple notepad-like editor. Just use gvim and stay in insert mode. You can learn the more useful features at your own pace, though I really don't think that it takes more than a few days to get comfortable with it.
 

KorrZ

Member
I've never used Visual Studio, but I have to throw in my support to Code::Blocks. I use it on Ubuntu and Windows and it's fantastic on both, lightweight, quick and easy to use. It just gets you right to coding with no bloat in the way.
 
I have a simple problem that seems to have numerous solutions, so I was curious how you would solve this problem. I'm almost embarrassed to ask, but I'd love to hear different approaches.

I have a script that parses out a serial number of a connected USB device. If you're at all familiar with android automation, you might be familiar with the "adb" command. it lists the serial numbers of connected devices. I'm intentionally limiting the script to only work when 1 device is connected. I've implemented a solution that is not robust, that's for sure. But I'm wondering how you would write it differently, SPECIFICALLY the parsing section. I'm using python, btw. The copy/paste job appears to remove the indentations though.


Here's what's written to stdout when you issue the "adb devices" command:

List of devices attached
V0124355SN device
<this is a blank line!>

How would you parse out that serial number? Here's what I'm doing. All critiques welcome.


def get_dsn():

cmd = ["adb", "devices"]

proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=False)

output = proc.communicate()[0].splitlines() #[0]="list of..", [1]=dsn, [2]=whitespace
del output[0] #Delete "list of devices attached" item

if len(output) == 1:
print "Device not detected. Please reconnect and rerun the script."
exit(1)
elif len(output) == 2:
dsn = output[0].split('\t')[0]
return dsn
else:
print "Please connect only 1 unit and rerun the script."
exit(1)

I first split the output into a list using splitlines(). This leaves me with a list of 3 items.

Then I simply delete the first item in the list ("List of devices attached") because I know I don't need it. But this feels so inelegant, and I know it will fail if the "adb devices" command output would ever change. But for a small script, would you really care? I want to work on better habits too, and I'm afraid this approach could lead to lazy habits.

Then I'm performing a split command on the first row in the list, with "\t" as a separator, and I set dsn equal to the first item in the resultant list (the serial number)

dsn = output[0].split('\t')[0]

The split is performed on a tab character that separates "V0124355SN" from "device". What I'm left with is the serial number. I can understand why I wrote this command, but should I make it clearer to those reading my code?

If android changes the output for this command at all, my script would be broken. But for such a basic script, do you think I should care?
 

mike23

Member
Looks reasonable. There's really no need to delete the first line though, just leave it in and adjust the other parts to expect 3 lines instead of 2 and access output[1] for the sn.

If the serial numbers are strictly formatted, you could always just use a regex to parse all the serial numbers at once without splitting the lines, eg "V\d{7}SN"
 

Ambitious

Member
I would suggest that you just learn vim or emacs. Just in terms of base capabilities, something like Sublime Text is better, but vim and emacs have the major advantage of being the defacto standard text editors. When you go to a new company, odds are they'll have support documentation and custom config files for using those programs with whatever proprietary infrastructure they run.

I tried to learn how to use vim several times and always failed, most times because of impatience. I always feel like I could be much faster with any graphical editor, standard keyboard shortcuts and also the mouse. And I miss error highlighting and other modeless information about my code usually offered by IDEs.

Though it's again on my todo list for my spare time, together with sed, git and advanced shell scripting. There are thousands of vim tutorials out there - could you recommend me a really good one?
 

tokkun

Member
I tried to learn how to use vim several times and always failed, most times because of impatience. I always feel like I could be much faster with any graphical editor, standard keyboard shortcuts and also the mouse. And I miss error highlighting and other modeless information about my code usually offered by IDEs.

Though it's again on my todo list for my spare time, together with sed, git and advanced shell scripting. There are thousands of vim tutorials out there - could you recommend me a really good one?

I'm afraid I don't know much about tutorials. I simply learned by downloading a cheat sheet and forcing myself to use only vim without the mouse for an entire day. I can say that once I became good at using vim, the idea of having to use a mouse for navigation or cut and paste is revolting. It's simply much faster to do these things with the keyboard now.

Regarding the extra features provided by IDEs, I agree that some of them can be pretty useful like continuous builds and high quality autocomplete. An option to get some of the best of both worlds is to use Eclipse with one of the vim plugins that lets you use vim navigation and commands in the Eclipse editor.

The things is, though, that I often seem to find myself in work situations where using a full IDE is just not convenient. For example the company may require me to write code on a VM in a remote data center for security reasons. In these cases, using Eclipse is laggy, whereas gvim is a snap.
 

Complex Shadow

Cudi Lame™
Anyone know java. cuz i am kinda stuck.

i am trying to convert a binary string to oct, hex or dec. but i don't know how to use radix.
Code:
StringBuilder s = new StringBuilder(tField.getText());
	String temp;
			if(oct.isSelected()){
			  temp = s.toString(2); //oct
			}else if(hex.isSelected()){
   			  temp = s.toString(16); //hex
			}else{
			  temp = s.toString(36); //dec
			}

please and thankyou to anyone that helps.
 

gblues

Banned
Looks reasonable. There's really no need to delete the first line though, just leave it in and adjust the other parts to expect 3 lines instead of 2 and access output[1] for the sn.

If the serial numbers are strictly formatted, you could always just use a regex to parse all the serial numbers at once without splitting the lines, eg "V\d{7}SN"

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
 

gblues

Banned
Anyone know java. cuz i am kinda stuck.

i am trying to convert a binary string to oct, hex or dec. but i don't know how to use radix.
Code:
StringBuilder s = new StringBuilder(tField.getText());
	String temp;
			if(oct.isSelected()){
			  temp = s.toString(2); //oct
			}else if(hex.isSelected()){
   			  temp = s.toString(16); //hex
			}else{
			  temp = s.toString(36); //dec
			}

please and thankyou to anyone that helps.

You don't need a StringBuilder class unless you're actually going to be doing string manipulation. All you need to do is convert the string to an Integer object, then call the appropriate string method depending on the output base. It might look something like:

Code:
String result;
Integer val = Integer.valueOf(tField.getText(), 2);
if(oct.isSelected())
  result = val.toOctalString(); // or: Integer.toString(val, 8);
else if(hex.isSelected())
  result = val.toHexString(); // or: Integer.toString(val, 16);
else
  result = val.toString(); // or: Integer.toString(val, 10);

EDIT: to clarify--the radix is only used if you are calling the static Integer method toString(). In Java, static methods are invoked via the name of the class (e.g. Integer.toString()), not an instance variable name (e.g. val.toString()). I think that distinction is where you got confused.
 

bluemax

Banned
Guys if I want to learn C++ on Mac what program would you recommend? I'm new to mac so getting used to whole OS in the process

You can compile C++ in Xcode. And I think there is built in command line GCC if you prefer to do it the old fashioned way.


Programming in somethign other than Visual Studio sounds like my idea of hell.

Granted I don't have much experience with others, other than a brief stint with (I think)G++ in college.

As someone who has mostly programmed on Windows and Unix, Xcode annoyed me to no end for the first week or so I used it. It still sucks but at least I can get work done in it now.
 

Complex Shadow

Cudi Lame™
You don't need a StringBuilder class unless you're actually going to be doing string manipulation. All you need to do is convert the string to an Integer object, then call the appropriate string method depending on the output base. It might look something like:
EDIT: to clarify--the radix is only used if you are calling the static Integer method toString(). In Java, static methods are invoked via the name of the class (e.g. Integer.toString()), not an instance variable name (e.g. val.toString()). I think that distinction is where you got confused.
dude. you just saved me hours of crying. and your right, i was getting them mixed up.
on to C.
 
Looks reasonable. There's really no need to delete the first line though, just leave it in and adjust the other parts to expect 3 lines instead of 2 and access output[1] for the sn.

If the serial numbers are strictly formatted, you could always just use a regex to parse all the serial numbers at once without splitting the lines, eg "V\d{7}SN"

Thanks Mike. Yeah looking at it again, I can see why removing the first item of the list was unnecessary. I'll make your suggested change, thanks.


Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

I thought about using regular expressions, but I'm not comfortable using them. What do you mean when you say that a person would now have two problems if they opted to use RE?
 

Ixian

Member
I thought about using regular expressions, but I'm not comfortable using them. What do you mean when you say that a person would now have two problems if they opted to use RE?
He probably means if you don't use regular expressions frequently, you're going to bang your head against the syntax trying to work out what you want to do.
 

gblues

Banned
It's actually a quote from JWZ, one of the original Netscape team. Basically, regexes are really powerful and have a tendency to be "write once, read never" because in the time it takes to suss out exactly what a bigger regex actually does, you could just rewrite the damn thing. And God help you if (when) you hit a corner case where your regex grabs too much or too little.
 

Complex Shadow

Cudi Lame™
substring(0, length-1) probably? Google "String Java API"
doesn't matter it looks like i can't test it. i was trying to shorten the string on mouse click (anywhere) but i can't get the mouse listener to work. and i really don't have the patience or the time to worry about this.

thanks for your help though. ill try again tomorrow morning.
 

Tacitus_

Member
So programmingGAF, is a Java 5 book worth using for learning the language? It's the newest one in my library.
(Yes I know, heresy to code in Java, but it's extremely employable)
 

Mondriaan

Member
I don't know why it would be. Java is great, especially for small scale projects, indie games for example.
I think that the conversation about Java not being good is more about whether or not Java is a bad first language for computer science students. (Maybe there are some aesthetics issues about clunkiness/wordiness, now that I think about it some more.[/edit]) It's certainly a good language to have on the resume.
 

Spoo

Member
If there were some list of languages that programmers ought to be exposed to, I'm sure Java would be on it.
 

gblues

Banned
So programmingGAF, is a Java 5 book worth using for learning the language? It's the newest one in my library.
(Yes I know, heresy to code in Java, but it's extremely employable)

I think we're technically on Java 7 now, but Java 6 would be a minimum. If you learn from a Java 5 book, you're likely going to be taught a few things that are deprecated in later versions.
 

Tacitus_

Member
I think that the conversation about Java not being good is more about whether or not Java is a bad first language for computer science students. (Maybe there are some aesthetics issues about clunkiness/wordiness, now that I think about it some more.[/edit]) It's certainly a good language to have on the resume.

I think it's old guard C/C++ programmers whining about Java. Just ask cpp_is_king, he even has an anti java avatar now :lol

I think we're technically on Java 7 now, but Java 6 would be a minimum. If you learn from a Java 5 book, you're likely going to be taught a few things that are deprecated in later versions.

That's what I figured. Oh well.
 

TheExodu5

Banned
I think we're technically on Java 7 now, but Java 6 would be a minimum. If you learn from a Java 5 book, you're likely going to be taught a few things that are deprecated in later versions.

Were the changes to Java 6 and 7 that big? Java 5 was the big one, with generics and for each loops being pretty substantial additions.

Reflection seems like the big one, but its uses are going to be pretty specific.

I think a Java 5 textbook would be just fine.
 
I got the basics of HTML and CSS, and want to move on to more web development. Not sure where to go too now though. HTML 5? Jquery? Ruby on Rails? PHP/Mysql? ASP.net? Something else? There are so many options and its a bit overwhelming.

My normal job is for a small company as a database administrator (which leaves me with loads of downtime, hence the interest in dabbling in webdevelopment), and i know that the only webdeveloper we got works with php, so that would make sense i guess. On the other hand, the guy has been working in PHP for 15 years or so, so perhaps he is just used to it and its not the best language to learn these days.
 

Zoe

Member
I got the basics of HTML and CSS, and want to move on to more web development. Not sure where to go too now though. HTML 5? Jquery? Ruby on Rails? PHP/Mysql? ASP.net? Something else? There are so many options and its a bit overwhelming.

Do you have previous programming experience, or do you only know HTML/CSS?

I would start with PHP/MySQL if your answer is no (personally I do ASP.NET, but it won't be as worth it since PHP is freely available). You can only do so much with Jquery if you're not going to be storing/retrieving data anywhere.
 

Randdalf

Member
I've been wondering this for a while now, how the Source engine (and I presume other engines) is able to map entity names (e.g. weapon_crowbar) to C++ classes (e.g. CWeaponCrowbar) using only preprocessor commands; without any long switch statements or lists of entities in files. I finally figured it out today and it's a pretty neat way of doing it.

They defined a macro LINK_ENTITY_TO_CLASS(localName, className) and a function GetClassMap() which do several things:
  1. Create a static table of mappings (with insert, access etc.) between a localName string and a function pointer to a function which returns a C_BaseEntity*. This table is accessed by a function GetClassMap().
  2. Inside the macro: Creates a function which returns a pointer to a C_BaseEntity (the class that all client side entities inherit from) which represents a "className" object.
  3. Inside the macro: Defines a new class called ClocalNameFoo inside which only the constructor is defined. In the constructor, it adds a new entry to the static table mentioned in the first point.
  4. Inside the macro: After the class, it instantiates a static instance of a ClocalNameFoo which will automatically run the constructor of that class when the program starts, hence automatically adding a string -> entity mapping to the table.

Then whenever you create a class which is an entity, you simply add a LINK_ENTITY_TO_CLASS(...) macro in the source file. I haven't figured out exactly how they load entity properties into classes from their BSP files yet, but I'm pretty happy that I understand how this works. I don't know the Source engine code too well, but they use a ton of preprocessor macros to make server-client interaction work.
 

Complex Shadow

Cudi Lame™
guys i have a problem in Java (again... last time >_<), i have an enter button which takes in a string of binary chars and converts it into an interger val. then i take that val and convert it into either hex, oct, or decimal. the thing i can't do is take the converted value and convert it into something else ( like say dec -> oct). the thing is its a runtime error so i don't really understand where i went wrong. i am using interger.toString(val,8) // oct to convert (into an oct in this case). any help would be greatly appreciated.
 

Slavik81

Member
So, Programming-GAF, what does your dev environment look like? I like mine. The font is Bitstream Vera Sans Mono. ClearType is disabled because it does terrible things to my code, despite looking better everywhere else.

j4T2FNiFslFyw.png


guys i have a problem in Java (again... last time >_<), i have an enter button which takes in a string of binary chars and converts it into an interger val. then i take that val and convert it into either hex, oct, or decimal. the thing i can't do is take the converted value and convert it into something else ( like say dec -> oct). the thing is its a runtime error so i don't really understand where i went wrong. i am using interger.toString(val,8) // oct to convert (into an oct in this case). any help would be greatly appreciated.

The runtime error doesn't give any indication of why it occurred? I'm not really a java guy, but aside from mistyping Integer and missing a semi-colon, that looks fine. Perhaps the error is due to some other code?

What's the smallest example you can create that reproduces the problem?
 

usea

Member
guys i have a problem in Java (again... last time >_<), i have an enter button which takes in a string of binary chars and converts it into an interger val. then i take that val and convert it into either hex, oct, or decimal. the thing i can't do is take the converted value and convert it into something else ( like say dec -> oct). the thing is its a runtime error so i don't really understand where i went wrong. i am using interger.toString(val,8) // oct to convert (into an oct in this case). any help would be greatly appreciated.
Please don't take this the wrong way, I'm genuinely trying to help.

Have you tried googling your problem?

When you're asking for help with some code, you have to post the code. Nobody can see it otherwise.

When you're encountering an error, read it. What does it say? Google it to figure out what it means. If you want help with it or you want to ask people what it means, you have to post the error. We can't see it otherwise.

I want to help you, but you have made it very difficult.

Here are some links from the first page of google results:
http://www.codebeach.com/2008/02/convert-hex-string-to-integer-and-back.html
http://www.java2s.com/Tutorial/Java/0040__Data-Type/ConvertDecimaltoOctal.htm
http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#parseInt(java.lang.String, int)

Spelling is important when you're programming. Details are important.

If you don't want to figure out anything, you just want to "get it working" without caring, why should other people care to help when you don't? Care about what you're doing. Pay attention. Read error messages. Read the code. Read examples online. Google your problem. Make an effort.

Again, not trying to be rude or offend you. I am just trying to help.

From the tiny bit of code you accidentally posted in your IDE screenshot, I guess you are trying to convert from an int to a hex/oct string using parseInt? parseInt takes a string and a "base" and tries to interpret the string as if it were in that base. It will fail if it's not. It returns an int.
Does this clear it up?
Code:
String binaryInput = "10110101001";
int decimalInteger = Integer.parseInt(binaryInput, 2);
String octString = Integer.toOctalString(decimalInteger);
String hexString = Integer.toHexString(decimalInteger);
System.out.println("decimal integer from binary string: " + decimalInteger);
System.out.println("octal string from decimal integer: " + octString);
System.out.println("hex string from decimal integer: " + hexString);

The method you're trying works fine as well:
Code:
String binaryInput = "10110101001";
int decimalInteger = Integer.parseInt(binaryInput, 2);
String octString = Integer.toString(decimalInteger, 8);
String hexString = Integer.toString(decimalInteger, 16);
System.out.println("decimal integer from binary string: " + decimalInteger);
System.out.println("octal string from decimal integer: " + octString);
System.out.println("hex string from decimal integer: " + hexString);

In either case, the output of the above code blocks is:
Code:
decimal integer from binary string: 1449
octal string from decimal integer: 2651
hex string from decimal integer: 5a9
 

dabig2

Member
guys i have a problem in Java (again... last time >_<), i have an enter button which takes in a string of binary chars and converts it into an interger val. then i take that val and convert it into either hex, oct, or decimal. the thing i can't do is take the converted value and convert it into something else ( like say dec -> oct). the thing is its a runtime error so i don't really understand where i went wrong. i am using interger.toString(val,8) // oct to convert (into an oct in this case). any help would be greatly appreciated.

Looks like usea has it covered for the most part, but I'm curious about an aspect of your program. How large is the binary string you're getting? Will it always be "small" values like 1010? Or are we talking binary strings that might get into the hundreds. Remember, integers can only hold so many bits...

For example, the decimal bit representation of the relatively small string :"I need help Gaf!" far eclipses the maximum size an Integer or even a Long can hold.

If you want to handle potentially large inputs, you can utilize the BigInteger class. This can handle - let's just say - very large number values.

Code:
String binaryS = "ridiculous long sequence of 0s and 1s here";

BigInteger bigInt = new BigInteger(binaryS, 2); //converts to decimal value
String hexS = bigInt.toString(16); //converts to hex
String octS = bigInt.toString(8); //converts to octal

//print out values below
...

So this will work not only for the small values, but also the large ones if your program is allowing the possibility of that. Downside is that of course BigIntegers are a bit more memory hungry than your normal primitive value. Of course, you can institute size checks on your input before you do any converting to see if you'll need an Integer, Long, or BigInteger, and then program accordingly.
 

BreakyBoy

o_O @_@ O_o
So, Programming-GAF, what does your dev environment look like?

As I mentioned before, I've taken to Sublime Text 2. It's mostly still set to the defaults, with the Monokai Bright color scheme. For now, I'm happy with it. If my past experiences with other IDEs/editors are any indication, I'll probably do subtle modifications to the default over time.

FAqZh.png
 

youta

Member
I got the basics of HTML and CSS, and want to move on to more web development. Not sure where to go too now though. HTML 5? Jquery? Ruby on Rails? PHP/Mysql? ASP.net? Something else? There are so many options and its a bit overwhelming.

I'm using mod_python right now, but for my next project I'd like to try CherryPy.
 

Davidion

Member
I just started taking a couple of Ruby classes and am diving into SQL towards the end of the month. It's decidedly more pleasant than memories of trying to learn C++ during high school.

The near-term goal is to learn Rails, SQL, and maybe MongoDB. For now I'm still completely green but...soon...

As I mentioned before, I've taken to Sublime Text 2. It's mostly still set to the defaults, with the Monokai Bright color scheme. For now, I'm happy with it. If my past experiences with other IDEs/editors are any indication, I'll probably do subtle modifications to the default over time.

FAqZh.png

Yes, I started using this due to my instructor using it and the PC defaults pretty damn good.
 

tuffy

Member
So, Programming-GAF, what does your dev environment look like? I like mine. The font is Bitstream Vera Sans Mono. ClearType is disabled because it does terrible things to my code, despite looking better everywhere else.
I prefer DejaVu Sans Mono, which has wider Unicode coverage but looks about the same as Vera Sans:
 
Top Bottom